辞書myDic値を参照したいList<MyObject> myList
...試しました
myList = myDic.Values.ToList()
しかし、これは辞書の値をコピーするだけのようです。myDicに加えられた変更(追加、削除、更新)がmyListに反映されるように、辞書を参照するためのリストが必要です。
辞書myDic値を参照したいList<MyObject> myList
...試しました
myList = myDic.Values.ToList()
しかし、これは辞書の値をコピーするだけのようです。myDicに加えられた変更(追加、削除、更新)がmyListに反映されるように、辞書を参照するためのリストが必要です。
これは実際には不可能です。 ディクショナリの値を列挙する ですmyDic.Values
。IEnumerable<MyObject>
それを呼び出す.ToList()
ことで、コピーの作成を明示的に要求しています。この呼び出しを省略すると、代わりに使用できる列挙型が得られますが、もちろん、インデックスを作成したり、直接変更したりすることはできません。
IEnumerable<MyObject>
代わりに取り出された fromを直接使用することを検討してくださいmyDic.Values
- が必要だと思う理由は何List<MyObject>
ですか?
もちろん、両方の長所を備えたリスト実装の代わりに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
}
}