也許一個愚蠢的問題,但..這是危險的嗎?關於事件
在我的代碼中,我在幾個地方使用以下構造。
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