私はカスタムキー構造体を使用してソートされた辞書を持っています。並べ替えを容易にするために、キーに変数をいくつか持たせて、等価比較に参加したいと思います。SortedDictionary.TryGetValue()オーバーロード
クラス
public struct Key
{
//Needs to participate in equality comparison for SortedDictionary.TryGetValue();
public int intKey;
public object objectKey;
//Needs to be ignored in SortedDictionary.TryGetValue();
public int sortingVariable;
public string otherSortingVariable;
}
の例Iは、new Key().equals(new Key())
がtrueを返す程度にEquals
とGetHashCode
の過負荷を試みました。
しかし、
辞書はどのように作成されましたか?カスタムIComparerをコンストラクタに渡しましたか? –
haim770
私はあなたの問題を再現することはできません、私はあなたが説明した 'TryGetValue(new Key()、out Value)'を迅速に実装しようとしましたが、正しい値を返します。 [mcve]を入力してください。 –
@ haim770私は 'Key'が' IComparable 'を実装していることを忘れています。しかし、 'CompareTo'関数はソートのためだけに使用され、' 0'を返すことはありません –
DarkDestry