(e,v)的含义=>在c#和Changed属性作为参数

时间:2013-04-12 18:04:16

标签: c#

(e, v) =>在C#中的语法含义是什么?

例如,

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

我知道我正在注册听取根对象的属性更改。并且,如果发生这样的事件,那么我正在调用updateConditions()方法。但是,它们之间的(e, v) =>是什么?

并且,是否有办法将更改后的属性作为参数发送到updateConditions()

3 个答案:

答案 0 :(得分:6)

这是一个Lambda Expression。基本上它创建了一个匿名方法,它调用updateConditions()并将事件绑定到该匿名方法。

相当于。

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

root.PropertyChanged += root_PropertyChanged

答案 1 :(得分:6)

关于你的第二个问题:

可以将更新的PropertyName发送到updateConditions()。由于v的类型为PropertyChangedEventArgs,因此它具有PropertyName属性:

root.PropertyChanged += (e, v) => updateConditions(v.PropertyName);

答案 2 :(得分:1)

语法(e, v) => (some sort of expression)创建一个lambda函数,它接受参数'e'和'v',然后返回计算表达式的结果。它基本上是一种创建函数的方法,因此您不必定义委托并以这种方式传递一个委托。在您的情况下,它接受参数e和v,然后只返回调用updateConditions()的结果。有关如何使用这些内容的详细信息,请查看http://www.codeproject.com/Articles/24255/Exploring-Lambda-Expression-in-C