使用两个字段的组合作为字典中的键

Alx*_*ndr 3 c# hash dictionary

我需要存储ac #dict,我可以在其中存储基于IntPtr和枚举的成员(如果有帮助,可以转换为int).换句话说,如果我得到IntPtr和enum(名为sp_playlist_type)的相同匹配,我需要能够得到相同的结果,但只有这样(这也很重要).我想我会创建一个包含这两个的结构,并重写GetHashCode(),但是我需要一个不会为这两个数字创建重复的散列算法,并且每次都生成相同的结果有两个数字.

Ree*_*sey 7

然后我需要一个不会为这两个数字创建重复的散列算法

实际上这不是真的.您需要覆盖GetHashCode(),但它可能会发生冲突.您希望最小化哈希代码中的冲突,而不是消除它们.

这实际上相当容易.一个常见的选择是只使用结构的两个成员的哈希码的XOR,或类似的东西.


Jam*_*are 6

我认为基于Tuple的GetHashCode和Equality创建的方式,您可以:

Dictionary<Tuple<IntPtr, YourEnum>, YourResultType>
Run Code Online (Sandbox Code Playgroud)

如果您使用的是.NET 4.0,当然.