如何实现类中没有任何ID的GetHashCode
本文关键字:任何 ID GetHashCode 何实现 实现 | 更新日期: 2023-09-27 18:11:41
例如class
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
如何在这个类中重写GetHashCode ?
你应该基于你的对象的哈希码计算的不可变字段,如果你可以使Person
的FirstName和LastName字段不可变,你可以使用以下模式基于Josh Bloch的建议:
public override int GetHashCode()
{
int hash = 17;
hash = hash * 31 + FirstName.GetHashCode();
hash = hash * 31 + LastName.GetHashCode();
return hash;
}
public override int GetHashCode()
{
return String.Concat(FirstName, LastName).GetHashCode();
}
你可以这样做:
public override int GetHashCode()
{
return FirstName.GetHashCode() ^ LastName.GetHashCode()
}
查看更多