c#对二个数进行判等

==操作符

分别对字符串进行比较,对值类型比较,对引用类型比较

string n1 = "1";     int n1 = 1;

string n2 = "1"; 或者int n2 = 1;

Console.WriteLine(n1 == n2);   返回”True”

object n1 = 1;

object n2 = 1;

Console.WriteLine(n1 == n2);   返回”False” //引用地址不同

新建一个object类型,右键选择转到定义关于比较的方法列表如下

public virtual bool Equals(object obj);//具体类型会重写这个方法

又可以新建valueType类型, 右键选择转到定义可以发现值类型重写了Equals方法

public static bool Equals(object objA, object objB);//静态方法1

public static bool ReferenceEquals(object objA, object objB);//静态方法2

对静态方法1和静态方法2分析,找出区别

object n1 = 1; object n2 = 1; int n3 = 10;object n4 = n1;

bool result1 = object.Equals(n1,n2);//实例相等,返回true

bool result2 = object.ReferenceEquals(n1, n2);//指向不同一个地址,则返回true

bool result3 = object.Equals(n3, n3); //实例相等,返回true

bool result4 = object.ReferenceEquals(n3, n3);//box,指向不是同一个地址,返回false

bool result4 = object.ReferenceEquals(n4, n1) //指向同一个地址,则返回true

Console.WriteLine(result1);//true

Console.WriteLine(result2);//false

Console.WriteLine(result3);//true

Console.WriteLine(result4);//false

Console.WriteLine(result5);//true

建议:对于值类型的比较,用类型自己的equals方法,不用object.Equals()方法,后面的方法会有box操作.

posted @ 2010-01-18 17:16  老Z  阅读(276)  评论(0编辑  收藏  举报