gpt4 book ai didi

c# - 在 C# 中实现 Equals 但不实现 GetHashCode

转载 作者:行者123 更新时间:2023-12-02 17:20:07 25 4
gpt4 key购买 nike

Possible Duplicate:
Why is it important to override GetHashCode when Equals method is overriden in C#?

我没有实现Object类的GetHashCode方法。所以我收到了很多警告。

有没有一种方法可以检查相等性,我只需检查 Equals 方法中的哈希码,因此同时实现 Equals 和 GetHashCode 而不会收到“Object.GetHashCode 未实现警告?”。

如果我只实现 Equals 而不实现 GetHashCode 会发生什么? myclass 的实例可以在我的应用程序中更新。

public class MyClass{

private string x;
private string y;

public override bool Equals(object obj)
{

try
{

return Object.Equals(this.x, obj.x)
&& Object.Equals(this.y, obj.y);

}
catch(Exception Ex)
{
log.Debug(Ex.StackTrace);
throw;
}
}

}

最佳答案

如果您实现Equals但不是GetHashCode ,那么如果您的类用于任何使用散列的数据结构( HashSet<T>Dictionary<K,V> 等),它将表现不正确。即使您没有显式使用这些数据结构,它们也可能被某些代码使用(即某些 Linq 操作使用 HashSet),因此重写 GetHashCode 会更安全。也是如此。

关于c# - 在 C# 中实现 Equals 但不实现 GetHashCode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10643758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com