Alx*_*ndr 3 c# hash dictionary
我需要存储ac #dict,我可以在其中存储基于IntPtr和枚举的成员(如果有帮助,可以转换为int).换句话说,如果我得到IntPtr和enum(名为sp_playlist_type)的相同匹配,我需要能够得到相同的结果,但只有这样(这也很重要).我想我会创建一个包含这两个的结构,并重写GetHashCode(),但是我需要一个不会为这两个数字创建重复的散列算法,并且每次都生成相同的结果有两个数字.
然后我需要一个不会为这两个数字创建重复的散列算法
实际上这不是真的.您需要覆盖GetHashCode(),但它可能会发生冲突.您希望最小化哈希代码中的冲突,而不是消除它们.
这实际上相当容易.一个常见的选择是只使用结构的两个成员的哈希码的XOR,或类似的东西.
我认为基于Tuple的GetHashCode和Equality创建的方式,您可以:
Dictionary<Tuple<IntPtr, YourEnum>, YourResultType>
Run Code Online (Sandbox Code Playgroud)
如果您使用的是.NET 4.0,当然.