6.8 相等性判断运算符
相等性判断运算符(==、!=)也是二元运算符,并且是左结合,如表6-6所示。
对于值类型数据的判断,相等性判断的依据是两个操作数的值是否相等。而对于引用类型的操作数而言,大多数情况下比较的是它们的引用,而不管它们引用的对象有多么相似,甚至其值相同。
如图6-3所示,在第一个图中,引用a和引用b指向的是同一个对象——类1,因此它们是相等的;而对于第二个图,两个引用指向不同对象,因此它们不相等。但也有例外,string类型是引用类型,但string类型之间比较的是字符串长度和它们的值,其中值是大小写敏感的。
图 6-3 引用类型的相等性
相等性运算符的示例如代码清单6-5所示。
代码清单6-5 相等性运算符示例
1 using System;
2
3 namespace ProgrammingCSharp4
4{
5 class OperatorSample
6{
7 static void Main()
8{
9 int i1=10;
10 int i2=10;
11 int i3=20;
12
13 object o1=i1;
14 object o2=o1;
15 object o3=i2;
16 object o4=i1;
17
18 string s1="hello";
19 string s2="hello";
20 string s3="world";
21
22 Console.WriteLine("i1==i2?{0}",i1==i2);
23 Console.WriteLine("i1!=i3?{0}",i1!=i3);
24 Console.WriteLine();
25
26 Console.WriteLine("o1==o2?{0}",o1==o2);
27 Console.WriteLine("o1==o3?{0}",o1==o3);
28 Console.WriteLine("o1!=o3?{0}",o1!=o3);
29 Console.WriteLine("o1==o4?{0}",o1==o4);
30 Console.WriteLine();
31
32 Console.WriteLine("s1==s2?{0}",s1==s2);
33 Console.WriteLine("s1==s3?{0}",s1==s3);
34}
35}
36}
上述代码输出结果为:
i1==i2?True
i1!=i3?True
o1==o2?True
o1==o3?False
o1!=o3?True
o1==o4?False
s1==s2?True
s1==s3?False