このリンクに示されているソリューションの1つのように、キーごとに複数の値を持つ辞書を作成する方法に関する投稿をここで見ました。
キーが複数の値を格納できるように、キーの値として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()に置き換えることです。これは機能しますか?
また、コードに問題や質問(初期化など)がある場合は、お気軽にお問い合わせください。
アドバイスありがとうございます。