c#中Equals的意思

来源:百度知道 编辑:UC知道 时间:2024/09/24 16:34:47
说明一下这个语句的意思
if (panduan.Equals(ultraGrid1.Rows[i].Cells["订单号"].Value.ToString()))

object中的Equals比较两个对象引用是否相同,
ValueType 中的Equals比较两个值是否相等,

Equals是一个虚方法,
所有对象类型都默认继承自object,你可以在你的类中重写Equals对判断逻辑重写。

从你上面的代码看是比较
panduan和ultraGrid1.Rows[i].Cells["订单号"].Value.ToString()
是否相等,虽然string也是继承自object属于引用类型,但是他重写了
自己的Equals方法,所以这里比较的是string的值是否相等!

C#中的相等有两种类型:引用相等(ReferenceEquals)和值相等(Equals)。值相等就是说两个对象包含相同的值。而引用相等则比较的是两个对象的引用是否是同一个对象。也就是说,如果ReferenceEquals为True,则Equals必然为True,反过来就不一定了。
这样的话可以看出来,ReferenceEquals我们没有比较去管他什么,系统自动解决,object类实现的静态RefrenceEquals函数就够了。而对于自定义的类型的话,如果想要实现判断值相等,是需要重写Equals函数的。
可以看一下string和自定义类的对比:
string strA = "Hello";
string strB = string.Copy(strA);
Console.WriteLine(strA == strB); //True
Console.WriteLine(strA.Equals(strB)); //True
Console.WriteLine(object.Equals(strA, strB)); //True
Console.WriteLine(object.ReferenceEquals(strA, strB)); //False
class MyClass
{
public int value = 1;
}
...