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操作.