int[]、short[]、float[] などの組み込み型の配列のjava.util.Arrays.hashCode()に相当する .NET ユーティリティ クラスはありますか?
もちろん、独自のユーティリティ クラスを作成することもできましたが、.NET フレームワークで既に利用可能なものを見つけようとしていました。
int[]、short[]、float[] などの組み込み型の配列のjava.util.Arrays.hashCode()に相当する .NET ユーティリティ クラスはありますか?
もちろん、独自のユーティリティ クラスを作成することもできましたが、.NET フレームワークで既に利用可能なものを見つけようとしていました。
これを行うフレームワーク自体には何もないと確信しています。いくつかのサードパーティの実装があるかもしれませんが、何も組み込まれていません (そして公開されていません)。
バージョン 3.5 までの .Net に組み込まれていることを私は認識していませんが、.Net 4 は、実装するIStructuralEquatableインターフェイスを介してネイティブにサポートする可能性が非常に高いですArray
(それを指摘してくれた Greg Beech に感謝します)。
IEnumerable の拡張メソッドを使用した簡単な実装を次に示します。
int HashContents<T>(this IEnumerable<T> enumerable)
{
int hash = 0x218A9B2C;
foreach (var item in enumerable)
{
int thisHash = item.GetHashCode();
//mix up the bits.
hash = thisHash ^ ((hash << 5) + hash);
}
return hash;
}
{0,0}
これにより、とに異なるハッシュコードが与えられます{0,0,0}
。