這個代碼塊中代字號的用途是什麼?波浪在這種情況下的目的是什麼?
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,並更好地添加作品。 –