1
我只是創建一個輔助方法來計算根據下面的答案在多個值的哈希:未經檢查的關鍵字適用於代表?
What is the best algorithm for an overridden System.Object.GetHashCode?
作爲遵循的方法:
static int HashItems(params object[] items)
{
unchecked
{
const int prime1 = 17;
const int prime2 = 23;
return items
.Select(item => item != null ? item.GetHashCode() : 0)
.Aggregate(prime1, (current, itemHash) => current*prime2 + itemHash);
}
}
現在,這讓我不知道是什麼未經檢查的範圍確實是。未檢查是適用於當前創建的函數的東西,但由於我們使用Linq,我不確定會發生什麼。創建一個委託會在編譯時創建一個新類,但是這個代理/類也會應用未經檢查的關鍵字嗎?文檔不清楚(https://msdn.microsoft.com/en-us/library/a569z7k8.aspx)。
我知道下面的結構,雖然的:
static int HashItems(params object[] items)
{
const int prime1 = 17;
const int prime2 = 23;
return items
.Select(item => item != null ? item.GetHashCode() : 0)
.Aggregate(prime1, (current, itemHash) => unchecked(current*prime2 + itemHash));
}