C#中Equal与==的使用原则

2017-09-18  本文已影响4人  晓龙酱
Equal与==都可以被重写,但要把握的原则是:

重写Equal来表示值相等,而不重写==继续让其表示引用相同
<pre>
class Person
{
public Person(int id)
{
ID = id;
}

public string ID{get; private set;}

<font color=blue>
public override bool Equals(object obj)
{
    Person p = obj as Person;
    if(p == null)
        return false;
    return ID == p.ID;
}
</font>
<font color=red>
// 这里要注意,一定要重写GetHashCode()方法
// 否则会出现当值相等的两个Person做为key在Dictionary中时,会认为是两个不同的key
pubic override int GetHashCode()
{
    return ID.GetHashCode();
}
</font>

}
</pre>

上一篇下一篇

猜你喜欢

热点阅读