Ger*_*nck 26 .net c# lambda event-handling c#-3.0
我有以下代码让GUI响应集合中的更改.
myObservableCollection.CollectionChanged += ((sender, e) => UpdateMyUI());
Run Code Online (Sandbox Code Playgroud)
首先,这是一个很好的方法吗?
第二:取消订阅此活动的代码是什么?它是相同的但是 - =(然后又是完整的匿名方法)?
Eoi*_*ell 36
首先......是的,这是一个很好的方式,它是干净的,小的形式,易于阅读和理解......当然需要注意的是"除非你以后想取消订阅".
我相信Jon Skeet之前曾指出"当使用匿名方法创建的委托的等效性时,规范明确地不保证行为."
因此,如果您以后需要取消订阅该事件,您最好实际创建一个委托实例,以便以后可以挂起该引用.
var myDelegate = delegate(sender, e){UpdateMyUI()};
myObservableCollection.CollectionChanged += myDelegate;
myObservableCollection.CollectionChanged -= myDelegate;
Run Code Online (Sandbox Code Playgroud)
J. *_*een 20
如果您需要取消订阅活动,则需要实例参考.不幸的是,这意味着您无法使用该特定语法.