也许一个愚蠢的问题,但..这是危险的吗?关于事件
在我的代码中,我在几个地方使用以下构造。
void MyFunction()
{
DoSomething(myClass.myProperty)
myClass.PropertyChanged += (s,e) => {
if (e.PropertyName == "myProperty") {
DoSomething(myClass.myProperty);
}
}
}
所以我最初想做一些事情,并且在未来的财产变化时也这样做。
现在事情是,我的程序执行过程中MyFunction()会被调用几次。我将分配给PropertyChanged的委托添加到它通过此方法的加班吗? (每次迭代消耗更多内存并减慢程序速度)或者是编译器/运行时足够聪明以理解我应该只在第一次添加..?如果是这样,这是如何工作的?
这对您来说可能不是问题,但是使用这种语法不可能从此事件中取消订阅匿名事件处理程序,这可能会导致一些内存问题。我建议编写函数,并将事件处理程序与+ = new eventhandler(function)相关联; – 2009-07-21 13:59:57