我想List<MyObject> myList
参考 Dictionary myDic 值...我试过了
myList = myDic.Values.ToList()
但这似乎只复制字典值。我需要列表来引用字典,因此对 myDic 所做的任何修改(添加、删除、更新)都将反映在 myList 中。
我想List<MyObject> myList
参考 Dictionary myDic 值...我试过了
myList = myDic.Values.ToList()
但这似乎只复制字典值。我需要列表来引用字典,因此对 myDic 所做的任何修改(添加、删除、更新)都将反映在 myList 中。
这是不可能的。 myDic.Values
将IEnumerable<MyObject>
枚举字典中的值。通过调用.ToList()
它,您明确要求制作副本。如果你省略了这个调用,那么你将有一个可以使用的可枚举,但当然你将无法索引它或直接更改它。
考虑直接使用IEnumerable<MyObject>
检索自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
}
}