Equal 和==比较

因为值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。
  "==" : 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
  "equals" : 操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
    而String是一个特殊的引用型类型,在C#语言中,重载了string 对象的很多方法方法(包括equals()方法),使string对象用起来就像是值类型一样。
string.Copy()会创建一个全新的对象。

   string s1 = "abc";
   string s2 = "abc";
   Console.WriteLine("s1==s2:{0}", s1 == s2); true
   Console.WriteLine("s1 equal s2:{0}", s1.Equals(s2)); true

 

string a = "hello";
string b = "o";
 string c = "helloo";
string d = a + b;
Console.WriteLine(c == d); true
Console.WriteLine(c.Equals(d));true
 Console.WriteLine(ReferenceEquals(c, d));false

 

 Student s11 = new Student(1 );
  Student s22 = new Student(1);
  Console.WriteLine("s11==s22:{0}", s11 == s22); false
  Console.WriteLine("s11 equal s22:{0}", s11.Equals(s22));false

 

posted @ 2012-05-22 14:40  clark_lu  阅读(214)  评论(0编辑  收藏  举报