関数でジェネリックを使用する必要はないので、質問はメソッドを実装する方法です
static string GetStableHashcode(IStructuralEquatable obj) { ... }
そして、唯一の賢明な解決策は、次のように実装することです。
static string GetStableHashcode(IStructuralEquatable obj) {
return obj.GetHashCode().ToString();
}
あなたの懸念は、安定した値を提供しないことであり、ドキュメントの注意Object.GetHashCode()
という最初のボックスに見られるように、懸念は非常に有効です。
実際、 で作成されたハッシュ コードの中には、 と のようにObject.GetHashCode
安定しているものもあり、 で使用されるアルゴリズムもハッシュ コードを「安定した方法」で結合します。ただし、これは実装の詳細であり、コードでこれに依存したい場合を除き、安定したハッシュ コードを作成して を実装するオブジェクトを提供することはできません。Int32.GetHashCode
String.GetHashCode
Tuple.GetHashCode
IStructuralEquatable