メソッドを使用して取得した参照を介してデリゲートを追加しようとすると、Action
ストアドにデリゲートをDictionary
追加しようとすると失敗するようです。TryToGetValue
エラーを再現する例を次に示します。
void Foo()
{
Console.WriteLine("Foo");
}
void Bar()
{
Console.WriteLine("Bar");
}
Dictionary<int, Action> dic = new Dictionary<int, Action>();
dic[3] = delegate{};
dic[3] += Foo;
Action ac;
if (dic.TryGetValue(3,out ac))
{
Console.WriteLine("Found");
ac += Bar;
}
dic[3]();
出力:
Found
Foo
値は見つかりましたが、 と が異なるオブジェクトへの参照であるようac
ですdic[3]
(Bar
は表示されません)。
何が起こっているのか誰か説明してくれませんか? 正確には何が満たされていout parameter
ますか?Action
クラスであるため、参照はに格納されている同じオブジェクトを指すべきではありませんac
かDictionary
?