我们有以下代码:
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/