c# - 为什么 "int"和 "sbyte"GetHashCode 函数生成不同的值?

标签 c# hash

我们有以下代码:

int i = 1;
Console.WriteLine(i.GetHashCode());  // outputs => 1

这是有道理的,除了 sbyte 和 short 之外,C# 中的所有整数类型都发生了同样的情况。 即:

sbyte i = 1;
Console.WriteLine(i.GetHashCode());   //  outputs => 257

这是为什么?

最佳答案

因为那个方法(SByte.GetHashCode)的来源是

public override int GetHashCode()
{
    return (int)this ^ ((int)this << 8);
}

至于为什么,微软的人都知道..

关于c# - 为什么 "int"和 "sbyte"GetHashCode 函数生成不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12501979/

相关文章:

c# - 获取两个日期时间之间的(满)小时列表

c# - 如何从父窗体标题栏中删除 MDI 子文本? C# 网络

perl - 如何通过方法返回的引用将哈希元素插入到字符串中?

c++ - 在 C++ 中,如何处理 HashMap 中的哈希冲突?

python - 如何得到一族独立的通用哈希函数?

c# - 如何使用c#在图表图形上显示值

c# - 从 BackroundWorker 线程向 StackPanel 添加控件

c# - 如何在脚本标签中找到定义根目录

ruby - 为什么散列上的 ||= 重新分配错误值?

perl - Perl 使用什么散列函数/算法?