1

(e, v) =>C# の構文上の意味は何ですか?

例えば、

TreeViewModel root = TreeViewModel.initializeRoot(parentStatus, statuses);
root.PropertyChanged += (e, v) => updateConditions();

ルート オブジェクトのプロパティの変更をリッスンするために登録していることはわかっています。そして、そのようなイベントが発生した場合は、メソッドを呼び出していupdateConditions()ます。しかし、(e, v) =>その間は何ですか?

そして、変更されたプロパティをパラメーターとしてに送信する方法はありますupdateConditions()か?

4

3 に答える 3

6

2 番目の質問:

に更新PropertyNameして送信することができますupdateConditions()vタイプPropertyChangedEventArgsであるため、次のPropertyNameプロパティがあります。

root.PropertyChanged += (e, v) => updateConditions(v.PropertyName);
于 2013-04-12T18:11:30.900 に答える
6

それはラムダ式です。基本的にupdateConditions()、イベントを呼び出してその匿名メソッドにバインドする匿名メソッドを作成します。

に相当します。

private void root_PropertyChanged(object e, PropertyChangeEventArgs v)
{
    updateConditions();
}

root.PropertyChanged += root_PropertyChanged
于 2013-04-12T18:08:02.300 に答える
1

この構文(e, v) => (some sort of expression)は、パラメーター 'e' と 'v' を受け取り、式を評価した結果を返すラムダ関数を作成します。これは基本的に、その場で関数を作成する方法であるため、デリゲートを定義してその方法で渡す必要はありません。あなたの場合、引数 e と v を取り、呼び出しの結果を単に返しますupdateConditions()。これらの使用方法の詳細については、http://www.codeproject.com/Articles/24255/Exploring-Lambda-Expression-in-C をご覧ください。

于 2013-04-12T18:09:11.417 に答える