如何使用 List 引用字典值
本文关键字:引用 字典 何使用 List | 更新日期: 2023-09-27 18:37:10
我想List<MyObject> myList
参考字典myDic值...我试过了
myList = myDic.Values.ToList()
但这似乎只复制字典值。我需要列表来引用字典,以便对myDic所做的任何修改(添加,删除,更新)都将反映在myList中。
这实际上是不可能的。 myDic.Values
是一个IEnumerable<MyObject>
,它将枚举字典中的值。 通过调用.ToList()
,您明确要求制作副本。 如果省略此调用,那么您将拥有一个可以使用的枚举对象,但当然您将无法索引它或直接更改它。
考虑直接使用从myDic.Values
检索到的IEnumerable<MyObject>
- 是什么让你认为你需要一个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
}
}