У меня есть некоторый код, как это:Является ли эта ссылка потерянной в C#?
public delegate void InputEventListener<T>(T e) where T : InputEvent;
private Dictionary<System.Type, System.Delegate> processors = new Dictionary<System.Type,System.Delegate>();
public bool RegisteEventListener<T>(InputEventListener<T> listener) where T : InputEvent
{
System.Type tt = typeof(T);
if(!processors.ContainsKey(tt))
{
InputEventListener<T> lis = new InputEventListener<T>(listener);
processors.Add(tt, lis);
return true;
}
InputEventListener<T> aaa = processors[tt] as InputEventListener<T>;
aaa += (listener);
//key point
processors[tt] = aaa;
return true;
}
, когда я пытался добавить второй слушателей в процессорах с таким же типом, если я не называю ключевой точкой линии:
processors[tt] = aaa;
в словаре не будет сохранен слушатель. но делегат должен быть правильным ссылочным типом? когда я изменяю aaa, он должен напрямую изменять данные в словаре, но почему мне все еще нужна эта строка кода, чтобы заставить ее работать?
достаточно ясно :-) – feilian118
Я добавил несколько соответствующих статей, которые могли бы сделать его еще более ясным –