0

辞書myDic値を参照したいList<MyObject> myList...試しました

myList = myDic.Values.ToList() 

しかし、これは辞書の値をコピーするだけのようです。myDicに加えられた変更(追加、削除、更新)がmyListに反映されるように、辞書を参照するためのリストが必要です。

4

2 に答える 2

5

これは実際には不可能です。 ディクショナリの値を列挙する ですmyDic.ValuesIEnumerable<MyObject>それを呼び出す.ToList()ことで、コピーの作成を明示的に要求しています。この呼び出しを省略すると、代わりに使用できる列挙型が得られますが、もちろん、インデックスを作成したり、直接変更したりすることはできません。

IEnumerable<MyObject>代わりに取り出された fromを直接使用することを検討してくださいmyDic.Values- が必要だと思う理由は何List<MyObject>ですか?

于 2012-06-13T21:53:46.773 に答える
0

もちろん、両方の長所を備えたリスト実装の代わりにObservableDictionaryを使用することもできます。これはここにあります。

リストと辞書が必要で、辞書が変更されるたびに新しいコピーを作成するという欠点なしに両方を同期する必要がある場合は、そのためのクラスを作成しませんか?

ここに短い例がありますが、これはおそらくスレッドの問題には適していません。

public class DictRefList
{
    private Dictionary<int, SomeRefClass> dict;
    private List<SomeRefClass> list; // your list implementation here

    public void DictRefList()
    {
        dict = new Dictionary<int, SomeRefClass>();
        list = new List<SomeRefClass>;
    }

    public void Add(int key, SomeRefClass val)
    { 
        dict.Add(key, val);
        list.Add(val);
    }

    public void Delete(int key, SomeRefClass val)
    {
        dict.Remove(key);
        list.Remove(val);
    }

    public void Update(int key, SomeRefClass val)
    {
        dict[key] = val;
        list.Add(val); // do what is necessary to keep it valid and have no duplicate value
    }
}
于 2012-06-13T22:01:29.940 に答える