我在这里看到了有关如何制作每个键具有多个值的字典的帖子,例如此链接中提供的解决方案之一:
看来我必须使用 List<> 作为键的值,以便一个键可以存储多个值。
如果您想添加值,链接中的解决方案很好。但我现在的问题是如何从单个键中删除特定值。
我有这段代码用于向字典添加值:
private Dictionary<TKey, List<TValue>> mEventDict;
// this is for initializing the dictionary
public void Subscribe(eVtEvtId inEvent, VtEvtDelegate inCallbackMethod)
{
if (mEventDict.ContainsKey(inEvent))
{
mEventDict[inEvent].Add(inCallbackMethod);
}
else
{
mEventDict.Add(inEvent, new List<TValue>() { v });
}
}
// this is for adding values to the dictionary.
// if the "key" (inEvent) is not yet present in the dictionary,
// the key will be added first before the value
我现在的问题是从键中删除特定值。我有这个代码:
public void Unsubscribe(eVtEvtId inEvent, VtEvtDelegate inCallbackMethod)
{
try
{
mEventDict[inEvent].Remove(inCallbackMethod);
}
catch (ArgumentNullException)
{
MessageBox.Show("The event is not yet present in the dictionary");
}
}
基本上,我所做的只是将 Add() 替换为 Remove() 。这行得通吗?
此外,如果您对代码有任何问题或疑问(初始化等),请随时提出。
感谢您的建议。