【发布时间】:2013-09-10 06:38:51
【问题描述】:
我来自 python 世界,其中只有可散列的对象可以用作字典的键。 C#中是否有类似的限制?可以使用自定义类型作为字典键吗?
【问题讨论】:
-
理论上你可以使用任何类型作为键。在实践中它应该是一个不可变的类型,否则当键开始变异时你会陷入痛苦的世界......
-
@PatrykĆwiek Note this comment -- “只有 GetHashCode 值和 Equals 定义的等价类需要是不可变的。为所有类类型定义了合适的等价类——引用相等——即通常是唯一应该用于可变对象的等价类。如果字典的目的是将该类型的实例与其他东西相关联,那么将可变类类型作为字典键没有任何问题。“
标签: c# dictionary types custom-type