我有以下代码让 GUI 响应集合中的更改。
myObservableCollection.CollectionChanged += ((sender, e) => UpdateMyUI());
首先,这是执行此操作的好方法吗?
第二:取消订阅这个事件的代码是什么?它是否相同但带有 -=(然后又是完整的匿名方法)?
最佳答案
首先...是的,这是一个很好的方法,它干净、小巧且易于阅读和理解...当然要注意“除非您以后想退订”。
我相信Jon Skeet在此之前指出 “当涉及到使用匿名方法创建的委托(delegate)的等效性时,规范明确不保证任何一种行为。”
因此,如果您以后需要取消订阅该事件,您最好实际创建一个委托(delegate)实例,以便稍后可以挂起引用。
var myDelegate = delegate(sender, e){UpdateMyUI()};
myObservableCollection.CollectionChanged += myDelegate;
myObservableCollection.CollectionChanged -= myDelegate;
关于c# - 如何取消订阅使用 lambda 表达式的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/805829/