我有很多字典,其中键是几个不同值(主要是字符串和整数)的组合。我是将这些键实现为类(并覆盖 GetHashCode()
、Equals()
等)还是改用 struct
?
ReSharper 使覆盖变得容易,但代码看起来很糟糕。改用结构对性能有影响吗?
最佳答案
如果您唯一的问题是为 Dictionary<TKey,TValue>
中的使用定义相等性那么您可以选择的另一条路径是实现 IEqualityComparer<T>
.这可以手动传递给字典构造函数并处理 TKey
的相等性比较。不修改 key 类型的值。
如果您在为复合值定义相等性时遇到更普遍的问题,那么我会专注于使复合值本身支持相等性。是的,定义平等所必需的全套方法很痛苦,但它主要是样板代码。正确使用它比样板代码看起来是否凌乱更重要。
关于c# - 字典中的组合键;覆盖 GetHashCode()、Equals 等还是使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448274/