6.8 相等性判断运算符

相等性判断运算符(==、!=)也是二元运算符,并且是左结合,如表6-6所示。

6.8 相等性判断运算符 - 图1

对于值类型数据的判断,相等性判断的依据是两个操作数的值是否相等。而对于引用类型的操作数而言,大多数情况下比较的是它们的引用,而不管它们引用的对象有多么相似,甚至其值相同。

如图6-3所示,在第一个图中,引用a和引用b指向的是同一个对象——类1,因此它们是相等的;而对于第二个图,两个引用指向不同对象,因此它们不相等。但也有例外,string类型是引用类型,但string类型之间比较的是字符串长度和它们的值,其中值是大小写敏感的。

6.8 相等性判断运算符 - 图2

图 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