使用recordId作为哈希码是不是一个坏主意?

Pet*_*ter 2 .net hash

假设我的数据库中有一个简单的DTO对象,并且Id是一个recordId绝对唯一的,那么执行以下操作是个好主意吗?

public class DTO
{
    public int Id { get; set; }

    public override bool Equals(object obj)
    {
        return (Id == ((DTO)obj).Id);
    }

    public override int GetHashCode()
    {
        return Id;
    }
}
Run Code Online (Sandbox Code Playgroud)

我怀疑它的原因是因为我没有在我周围的代码中看到它,而不是代码

int hash = 7;
hash = 89 * hash + pageId.hashCode();
hash = 89 * hash + recordId;
return hash;
Run Code Online (Sandbox Code Playgroud)

Jon*_*erg 5

哈希码的合同是"两个相等的对象必须具有相同的哈希码".这意味着用于确定相等性的任何字段必须在构成哈希码的位中表示.由于您的平等契约仅指代ID,所以这是哈希码中唯一需要的东西.