c# - 字典中的组合键;覆盖 GetHashCode()、Equals 等还是使用结构?

标签 c# .net dictionary struct value-type

我有很多字典,其中键是几个不同值(主要是字符串和整数)的组合。我是将这些键实现为类(并覆盖 GetHashCode()Equals() 等)还是改用 struct

ReSharper 使覆盖变得容易,但代码看起来很糟糕。改用结构对性能有影响吗?

最佳答案

如果您唯一的问题是为 Dictionary<TKey,TValue> 中的使用定义相等性那么您可以选择的另一条路径是实现 IEqualityComparer<T> .这可以手动传递给字典构造函数并处理 TKey 的相等性比较。不修改 key 类型的值。

如果您在为复合值定义相等性时遇到更普遍的问题,那么我会专注于使复合值本身支持相等性。是的,定义平等所必需的全套方法很痛苦,但它主要是样板代码。正确使用它比样板代码看起来是否凌乱更重要。

关于c# - 字典中的组合键;覆盖 GetHashCode()、Equals 等还是使用结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2448274/

相关文章:

python - 如何在Python的for循环中创建唯一的字典?

python - 追加到 Python 字典中的列表

python - 这怎么能写在一行上呢?

c# - 运算符 '||' 不能应用于类型 'object' 和 'bool' 的操作数

C# 十进制转 VB6 货币

c# - 将连接字符串存储在数据库中并在应用程序启动时检索它

.NET:如何将 Windows 窗体转换为 Windows 控件

c# - 从类属性创建通用列表

c# - 什么是NullReferenceException,如何解决?

c# - 检查算术溢出并获取溢出计数?