== 和equals方法区别
== 和equals 方法区别
① ==操作比较的是两个变量的值是否相等。比较的是栈的内容
②equals()方法比较的是两个对象的内容是否一致.比较的是堆的内容
对于值类型,如果对象的值相等,则相等运算符 (==) 返回 true,否则返回 false。
对于 string 类型,== 比较字符串的值。
对于string 以外的引用类型,如果两个对象引用同一个对象,则 == 返回 true。
namespace ConsoleApplication1 { class Person { private string name; public string Name { get { return name; } set { name = value; } } public Person(string name) { this.name = name; } } class Program { static void Main(string[] args) { string a = new string(new char[] { 'h', 'e', 'l', 'l', 'o' }); string b = new string(new char[] { 'h', 'e', 'l', 'l', 'o' }); Console.WriteLine(a == b); // true,string可以看成是值类型 Console.WriteLine(a.Equals(b)); // true object g = a; object h = b; Console.WriteLine(g == h); // fasle,在栈中开辟了两块地方 Console.WriteLine(g.Equals(h)); // true,堆中的内容相等 Person p1 = new Person("jia"); Person p2 = new Person("jia"); Console.WriteLine(p1 == p2); // fasle,在栈中开辟了两块地方 Console.WriteLine(p1.Equals(p2)); // true,equals指定不明确,不知道比较神马 Person p3 = new Person("jia"); Person p4 = p3; Console.WriteLine(p3 == p4); // true,p3直接把所有东东都给了p4 Console.WriteLine(p3.Equals(p4)); // true Console.ReadLine(); } } }
孜孜不倦,学习不止
浙公网安备 33010602011771号