gpt4 book ai didi

c# - 如何使用自定义泛型类型作为字典中的键?

转载 作者:行者123 更新时间:2023-12-03 19:15:14 34 4
gpt4 key购买 nike

我想使用自定义泛型类作为字典中的键。我应该如何覆盖 EqualsGetHashCode

例如,

public class SomeKey<T,V>
{
public T Value1 { get; set; }
public V Value2 { get; set; }

public SomeKey(T val1, V val2)
{
this.Value1 = val1;
this.Value2 = val2;
}

public override bool Equals(SomeKey<T,V> otherKey)
{
//whats the best option here?
}

public override int GetHashCode()
{
//whats the best option here?
}
}

谢谢

最佳答案

相等很简单:测试 Value1Value2 是否相等。

对于哈希码,最简单的方法是使用异或来组合 Value1Value2 中的哈希码。

public override bool Equals(SomeKey<T,V> otherKey)
{
return Value1.Equals(otherKey.Value1) && Value2.Equals(otherKey.Value2);
}

public override int GetHashCode()
{
return Value1.GetHashCode() ^ Value2.GetHashCode();
}

有很多计算哈希码的替代方法。如果性能是瓶颈,那么您应该考虑比异或更适合的东西。

例如,Stack Overflow 提供以下链接(以及更多链接):

关于c# - 如何使用自定义泛型类型作为字典中的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842192/

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