gpt4 book ai didi

c# - (x, y).GetHashCode() 如何在幕后工作?

转载 作者:太空宇宙 更新时间:2023-11-03 18:01:56 26 4
gpt4 key购买 nike

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> .来自reference source ,你可以看出 GetHashCode()正在通过使用

组合每个对象(和一个额外的随机种子)的哈希码来计算哈希码
 public static int Combine(int h1, int h2)
{
uint rol5 = ((uint)h1 << 5) | ((uint)h1 >> 27);
return ((int)rol5 + h1) ^ h2;
}

关于c# - (x, y).GetHashCode() 如何在幕后工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55541815/

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