GetHashCode()与^

Nil*_*ish 5 c# c#-4.0

GetHashCode()函数使用代码返回某些内容时,它是否有一些特殊含义contains ^ symbol

public class ClassProp
{
    public int Prop1 { get; set; }
    public int Prop2 { get; set; }
    public int Prop3 { get; set; }
    public int Prop4 { get; set; }
    public int Prop5 { get; set; }

    public override int GetHashCode()
    {
        return Prop1.GetHashCode() ^ Prop2.GetHashCode() ^ 
               Prop3.GetHashCode() ^ Prop4.GetHashCode() ^ Prop5.GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

Tud*_*dor 5

^是C#XOR运算符.没有什么"特别"的,只是所有类属性的哈希码都是异或的.

编辑:GetHashCode返回一个通用代码,用作复杂对象的速记标识符.当您想要存储对象然后根据其哈希代码快速检索它们时,常见的用途是散列数据结构.假设一个类Person和一些具有相应哈希码的对象:

Alex 8540
John 9435
Peter 2453
Run Code Online (Sandbox Code Playgroud)

这些代码是基于每个对象的一些或所有字段生成的,并且必须尽可能少地发生冲突以确保有效的散列.现在我们可以使用哈希码将对象存储在哈希表中:

Entries
0 -> Alex
1 -> John
2 -> Peter
Run Code Online (Sandbox Code Playgroud)

使用各自的哈希码将对象存储在表内以确定位置.接下来,可以使用相同的哈希代码轻松检索它们.

我建议你找一些关于哈希表如何工作的文献,因为在SO帖子中解释有点太多了.


Dav*_*nan 4

这只是按位异或运算符。它通常用于将不同对象的哈希码组合成一个整体哈希码。

这不是在谷歌上搜索最容易的东西之一!搜索此类内容时我的建议是查看所有运算符的表