c# - 字典中的复合键;覆盖GetHashCode(),等于等或使用结构?

原文 标签 c# .net dictionary struct value-type

我有很多字典,其中的键是几个不同值(主要是字符串和整数)的组合。我是将这些键实现为类(并重写GetHashCode()Equals()等)还是使用struct来代替?
resharper使重写变得容易,但是代码看起来很糟糕。使用struct是否会影响性能?

最佳答案

如果您唯一的问题是定义在Dictionary<TKey,TValue>中使用的等式,那么您可以选择的另一个路径是实现IEqualityComparer<T>。这可以手动传递给dictionary构造函数,并在不修改键类型的情况下处理TKey值的相等性比较。
如果您在为复合值定义相等性方面遇到了更普遍的问题,那么我将集中精力使复合值在本机上支持相等性。是的,定义实现平等所必需的全套方法是一件痛苦的事,但它主要是锅炉板代码。把它弄对比锅炉板代码看起来是否凌乱更重要。

相关文章:

python - 删除圆括号和不需要的单词的括号[Python]

python - 使用for循环从字典中删除项目

c# - 在Visual Studio 2017中创建安装程序时遇到错误

c# - 扩展ASP.NET应用程序

c# - 拦截WCF方法调用和基于身份验证状态的“重新路由”

c# - 十进制ToString格式,至少提供1位数字,无上限

c# - .NET ConcurrentDictionary GetOrAdd方法可以调用异步方法吗? [重复]

.net - 为什么对AddDllDirectory的此调用失败,并显示“参数不正确”?

c# - Response.Redirect(“〜/…”)在HTTP响应中到底放了什么?

python - Python:从键:值对的字符串创建嵌套字典