如何 (x, y).GetHashCode() 在幕后工作


public class Lemon{
   public int Ounces;
   public string Color;
   public override int GetHashCode() => (Ounces, Color).GetHashCode();
}

我很好奇它是如何工作的。 (Ounces, Color)类似于匿名类型,但不共享相同的语法。如果它是匿名类型,那么我仍然不确定它如何知道获得唯一的哈希值。

指向相关 .net 源代码的链接会很棒。 这很难发现,因为我不确定(Ounces, Color)最终被编译成哪种类型。

(Ounces, Color)是一个

元组,在 C# 7 中引入。相应的类型是 ValueTuple<T1, T2> 。从参考源中,您可以知道GetHashCode()正在通过组合每个对象(和其他随机种子(的哈希代码来计算哈希代码,使用

 public static int Combine(int h1, int h2)
 {
     uint rol5 = ((uint)h1 << 5) | ((uint)h1 >> 27);
     return ((int)rol5 + h1) ^ h2;
 }

相关内容

  • 没有找到相关文章

最新更新