多分愚かな質問ですが、危険ですか?イベントについて
私のコードでは、私はいくつかの場所で以下の構造を使用しています。
void MyFunction()
{
DoSomething(myClass.myProperty)
myClass.PropertyChanged += (s,e) => {
if (e.PropertyName == "myProperty") {
DoSomething(myClass.myProperty);
}
}
}
私は最初に何かしたいと思いますし、将来的にプロパティが変更されても同じことをしたいと思います。
今、問題はMyFunction()がプログラムの実行中に数回呼び出されることです。私がPropertyChangedに割り当てるデリゲートは、このメソッドを通過する際に追加されますか? (より多くのメモリを消費する毎回の反復とプログラムの減速)またはコンパイラ/ランタイムは私が最初に追加する必要があることを理解するのに十分なスマートなのですか?もしそうなら、これはどのように機能しますか?
これは問題ではないかもしれませんが、この構文では、このイベントから匿名イベントハンドラの登録を解除することができないため、メモリの問題が発生する可能性があります。私は、関数を書くことをお勧めし、ちょうど+ =新しいイベントハンドラ(関数)でイベントハンドラを添付します。 –