我已经这样做了一段时间,但我没有注意到,我每次删除事件处理程序时都使用了new
。我应该创造一个新的对象?C#删除事件处理程序
基本上1和2之间有区别吗?
ethernetdevice.PcapOnPacketArrival -= new SharpPcap.PacketArrivalEvent(ArrivalResponseHandler);
ethernetdevice.PcapOnPacketArrival -= ArrivalResponseHandler;
编辑: 好吧,这是一个重复。对于那个很抱歉。 答复已发过标签here。
具有相同目标,方法和调用列表的相同类型的两个代表被认为是相等的。
由于委托只是对方法和(可选)实例的引用,所以比较这两个方法应该足以确定相等性。 – Botz3000 2009-09-28 09:55:38
是的,但一般来说,如果您在任意引用类型上调用'new T()'两次,您会得到两个不同的实例。由于这对于委托人来说似乎不是这样,我推断委托构造函数会像'Type'类一样自动实例化实例。 – 2009-09-28 10:00:23
实习 - 这是什么意思?感谢你的回答。这种解决我的疑问。当我添加处理程序并在删除处理程序时创建一个新处理程序时,我对这个新程序感到疑惑,因为我正在创建一个新的程序。很奇怪。 – Sharun 2009-09-28 10:10:31