たとえば、ジェネリック関数に渡される同じ(任意の)タイプの2つの異なるオブジェクトがあるとします。私は、彼らが議論としてどの順序で渡されても、毎回同じ方法で注文する方法が必要です。それらの順序は重要ではありません。ちょうど、同じハッシュコードを持っているという点で一貫していますが、等しくはありません。ハッシュコードが異なる大部分のケースでは、ハッシュコードが単純に使用されます。同じハッシュコードを持つ2つの異なるオブジェクトの確定的なソート
仮定:
- 同じベース型
- 同じハッシュコード
- なく、同じオブジェクト
- 参照タイプは偽
- オブジェクトを返します。 .ReferencesEqualsはfalseを返します
- どちらのオブジェクトは、順序が唯一うまくいけば、誰かがこの、まれに創造的な解決策を考え出すことができ、特定のアセンブリ
の特定のランタイム内で一貫している必要がありますが、面倒なエッジケース
private static ReferenceEqualityComparer<T> : IEqualityComparer<T> where T:class
{
public bool Equals(object x, object y) => ReferenceEquals(x, y);
public int GetHashCode(object obj) => RuntimeHelpers.GetHashCode(obj);
}
をその比較子としてことがありますDictionary<T, int>
に要素を追加:ありがとう
あなたのメモリアドレスをソートしようとすることはできますが、これはアプリを実行している同じセッションでのみ一致します。アプリを再起動すると、アドレスが変更されます。 https://msdn.microsoft.com/en-us/library/zcbcf4ta.aspx – Mangist
@Mangist「オブジェクトを固定することはできません」 – TheCatWhisperer