特定のオブジェクトと等しい SortedDictionary からキーを取得する方法はありますか? 説明のために、メモリを大量に消費する不変のキー タイプを持つ辞書を作成するとします。
var dictionary = SortedDictionary<MyHugeType, int>();
var myEnormousKey = new MyHugeType();
dictionary[myEnormousKey] = 123;
その後、次のようなことを行います。
// This is a new instance, but it's identical to the previous key
var myIdenticalKey = new MyHugeType();
if(dictionary.ContainsKey(myIdenticalKey)) {
myIdenticalKey = dictionary.GetKeyEqualTo(myIdenticalKey);
}
// Use myIdenticalKey reference...
明らかに、SortedDictionary には「GetKeyEqualTo」メソッドがありません。しかし、同様の効果を達成できる方法はありますか?これは基本的に、重いキー オブジェクトをインターンする効果があり、同一のインスタンスを破棄できます。キーのインデックスとそれに一致するオブジェクト インスタンスを取得することにより、SortedList クラスを使用してこれを実行できることはわかっていますが、SortedDictionary の一貫した挿入パフォーマンスは、私の用途には適しています。
すべての辞書のキーを反復して一致を検索するか、独自の BST クラスを作成する以外に、.NET の組み込みコレクションでこの目的を達成する方法はありますか?