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>