C#:相同的对象必须具有相同的 HashCode?

标签 c# .net object equals hashcode

假设我有两个名为 KM 的对象

if(K.Equals(M))
{

}

如果这是真的,KM 总是 具有相同的HashCode

或者这取决于编程语言?

最佳答案

GetHashCode() 的契约(Contract)需要它,但由于任何人都可以自己实现它,因此永远无法保证。

许多类(尤其是哈希表)需要它才能正确运行。

如果您正在实现一个类,您应该始终确保两个相同的对象具有相同的哈希码。

如果你正在实现一个实用方法/类,你可以假设两个相同的对象具有相同的哈希码(如果不是,那是另一个类,而不是你的,这是错误的)。

如果您正在实现具有安全隐患的内容,您不能假设它。

关于C#:相同的对象必须具有相同的 HashCode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899041/

相关文章:

c# - 在 Mono 中检测符号链接(symbolic link)和管道

c# - ByteArray 的 String.Format 将 0x00 转换为 0,如何保留 00

c# - Xamarin.Forms - 数据更改时 ListView 不更新

javascript - 在 JavaScript 中为对象中的键插入数组格式的值

java - 比较java中的int值?

c# - 从键中获取字符

c# - 用于 Linux 的 dotnet : Console Input Cursor Navigation

c# - 如何并排加载c#对象

c# - 从我的 C# 应用程序单击另一个应用程序中的按钮?

javascript - 为什么我的removeNumbersLessThan 函数无法正常工作?