gpt4 book ai didi

c# - "composite"变量类型的正确实现是什么?

转载 作者:太空狗 更新时间:2023-10-30 00:45:24 26 4
gpt4 key购买 nike

我有一个程序必须使用复合键来管理对象。这个键,简单来说就是几个字符串。

我有以下代码:

public struct MyKey
{
public string Part1 { get; set;} // always set
public string Part2 { get; set;} // can be null
public MyKey(string part1, string part2) : this()
{
this.Part1 = part1;
this.Part2 = part2;
}
}

这可以用来存储我的值。

现在我希望能够:

  • 使用等于运算符(part1 和 part2 相等)
  • 在字典中使用键,尤其是使用 Contains 方法

我猜了很多事情(重写等于运算符、重写 GetHashCode 和 Equals 方法、实现 IComparable 等),但我不确定实现我的目标需要哪些必要步骤以及什么会导致开销.

提前谢谢

最佳答案

使用 .NET 4.0 Tuple , 它有一个正确的 Equals()GetHashCode()基于组件值。我以前使用过元组,或者如果它们是字符串键,你总是可以用分隔符连接,但如果你真的想保留那个类作为你的键,你确实需要一个适当的 Equals() 和 GetHashCode(),所以在那种情况下有YourType 工具 IEqualityComparer<YourType> .

附注如果您想手动而不是元组来覆盖 GetHashCode(),这是一个很好的示例...

What is the best algorithm for an overridden System.Object.GetHashCode?

关于c# - "composite"变量类型的正确实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514611/

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