先给出微软的Demo例子,也可以下面的代码,链接如下:
用法:
对于预定义的值类型,如果操作数的值相等,则相等运算符 (==
) 返回 true,否则返回false
。 对于string 以外的引用类型,如果两个操作数引用同一个对象,则==
返回true
。 对于string
类型,==
比较字符串的值。
备注:
用户定义的值类型可重载 ==
运算符(请参见operator)。 用户定义的引用类型也可重载 == 运算符,尽管在默认情况下,无论对于预定义的引用类型还是用户定义的引用类型,==
的行为都与上面描述的相同。 如果重载==
,则还必须重载!=。 在枚举时通常允许整型运算。
关于 == 我的总结 (==运算符对于值类型和引用类型的运算是不一样的)
1 值类型:比较操作数的值
1.1 直接2个值类型的变量,直接进行==运算,就是直接比较值相等否
1.2 2个值类型的变量转为object(object(变量名)),就是比较引用是否指向同一个对象,2个不同的变量的话返回false
2 引用类型
2.1 String以外的引用类型 比较是否引用同一个对象
2.2 String类型 比较字符串的值是否相等,主要是因为:String重载了==运算符
class Equality
{
static void Main()
{
// Numeric equality: True
Console.WriteLine((2 + 2) == 4);
// Reference equality: different objects,
// same boxed value: False.
object s = 1;
object t = 1;
Console.WriteLine(s == t);
// Define some strings:
string a = "hello";
string b = String.Copy(a);
string c = "hello";
// Compare string values of a constant and an instance: True
Console.WriteLine(a == b);
// Compare string references;
// a is a constant but b is an instance: False.
Console.WriteLine((object)a == (object)b);
// Compare string references, both constants
// have the same value, so string interning
// points to same reference: True.
Console.WriteLine((object)a == (object)c);
}
}
/*
Output:
True
False
True
False
True
*/
微软的代码