【发布时间】:2011-09-21 11:42:18
【问题描述】:
创建新的事件处理程序与将其直接分配给事件的实际区别、优点和缺点是什么?
_gMonitor.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged);
对比
_gMonitor.CollectionChanged += OnCollectionChanged;
【问题讨论】:
创建新的事件处理程序与将其直接分配给事件的实际区别、优点和缺点是什么?
_gMonitor.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged);
对比
_gMonitor.CollectionChanged += OnCollectionChanged;
【问题讨论】:
在 C# 2.0 及更高版本中,它们是相同的。在 C# 1.2(.NET 1.1 附带的那个)中,只有第一个语法(带有new)编译;-p
第二种语法可以节省按键,但 VS intellisense 通常会建议第一种。最终,它几乎没有什么区别。我通常在在线代码示例中使用第二种语法,仅仅是因为它避免了超过(窄)列宽!
【讨论】:
timer.Tick += new Handler_Tick(timer_TickMethod); 不是 timer.Tick += timer_TickMethod; 并且取消订阅对 timer.Tick += new Handler_Tick(timer_TickMethod); 没有帮助。
_gMonitor.CollectionChanged -= OnCollectionChanged 或 _gMonitor.CollectionChanged += new NotifyCollectionChangedEventHandler(OnCollectionChanged) 怎么样,第一个选项可以吗?
编译器有足够的可用信息使new EventHandler 有效地syntactic sugar。
它知道您将事件处理程序附加到事件,因为此时只有+= 和-= 有效,因此您无需告诉它要做什么。
【讨论】: