C#C#中的相等种类和相等运算符

示例

在C#中,有两种不同的相等类型:引用相等和值相等。值相等是相等性的通常理解:它意味着两个对象包含相同的值。例如,两个值为2的整数具有相等的值。引用相等意味着没有要比较的两个对象。而是有两个对象引用,这两个对象都引用同一对象。

object a = new object();
object b = a;
System.Object.ReferenceEquals(a, b);  //返回true

对于预定义的值类型,相等运算符(==)如果其操作数的值相等,则返回true,否则返回false。对于字符串以外的引用类型,如果==的两个操作数引用相同的对象,则返回true。对于字符串类型,==比较字符串的值。

// 数值相等:True
Console.WriteLine((2 + 2) == 4);

// 参考相等:不同的对象, 
// 相同的框值:False。
object s = 1;
object t = 1;
Console.WriteLine(s == t);

// 定义一些字符串:
string a = "hello";
string b = String.Copy(a);
string c = "hello";

// 比较常量和实例的字符串值:True
Console.WriteLine(a == b);

// 比较字符串引用; 
// a是一个常数,而b是一个实例:False。
Console.WriteLine((object)a == (object)b);

// 比较两个常量的字符串引用 
// 具有相同的值,所以字符串实习
// 指向相同的参考:正确。
Console.WriteLine((object)a == (object)c);