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

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


最佳答案:

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

译文:来源   文章分类: c# .net dictionary struct value-type

相关文章:

c# - 如何在C#中从MongoDB中以正确的JSON格式检索数据

c# - 单击组合框时如何避免乘法

c# - MVVM模式,ObservableObject

c# - ASP.NET-在构建过程中将项目添加到下拉列表

c# - 以编程方式在按钮上设置图像

c# - C#收益后续行动

c# - 继续未运行C#

c# - WPF捕捉控件

c# - 由名称空间更改引起的错误?

c# - 如何使linqpad更新列