这个代码块中代字号的用途是什么?波浪在这种情况下的目的是什么?
public override int GetHashCode()
{
return ~this.DimensionId.Id^this.ElementId.Id;
}
^运算符(C#参考) Visual Studio 2010中 二元^运算符预定义的整型和布尔。对于整型,^计算其操作数的按位异或。对于bool操作数,^计算逻辑异或操作数;也就是说,当且仅当其中一个操作数为真时,结果才是真的。
〜算符(C#参考) Visual Studio 2010中 操作符〜对其运算数执行,其具有反转每个比特的效果的按位求补操作。按位补充运算符是为int,uint,long和ulong预定义的。
〜(代字号)运算符对其单个整数操作数执行按位补码。 (因此〜运算符是一元运算符,例如!和一元运算符,即&和*运算符)。补数表示将所有0位全部更改为1,将所有1全部更改为0
什么是原因为什么它会在这种情况下使用(而不是简单地排除它)?
如果值很小,xor运算符往往会产生较差的散列分布。翻转这些位可以改变这一点。这实际上运作的可能性不好。将素数乘以1,并更好地添加作品。 –