Я делал это некоторое время, но я не заметил, что каждый раз, когда я удаляю обработчик событий, я использую new
. Должен ли я создавать новый объект?C# удаление обработчика событий
В принципе есть разница между 1 и 2?
ethernetdevice.PcapOnPacketArrival -= new SharpPcap.PacketArrivalEvent(ArrivalResponseHandler);
ethernetdevice.PcapOnPacketArrival -= ArrivalResponseHandler;
EDIT: Хорошо это дубликат. Извини за это. Ответ отправлен here.
Два делегата одного типа с одинаковыми целями, методами и списками вызовов считаются равными.
Поскольку делегат - это просто ссылка на метод и (необязательный) экземпляр, сравнение этих двух должно быть достаточным для определения равенства. – Botz3000
Да, но, вообще говоря, если вы вызываете 'new T()' дважды на произвольный тип ссылки, вы получите два разных экземпляра. Поскольку это не соответствует делегатам, я выводю, что конструктор делегата автоматически выполняет экземпляры, как это делает класс 'Type'. –
интернированный - что это значит? Спасибо за ответ. В этом вопросе я сомневаюсь. Мне было интересно об этом новом, поскольку я создаю новый экземпляр, когда добавляю обработчик и создаю новый, когда я его удаляю. Очень странно. – Sharun