(e, v) =>
在C#中的语法含义是什么?
例如,
TreeViewModel root = TreeViewModel.initializeRoot(parentStatus, statuses);
root.PropertyChanged += (e, v) => updateConditions();
我知道我正在注册听取根对象的属性更改。并且,如果发生这样的事件,那么我正在调用updateConditions()
方法。但是,它们之间的(e, v) =>
是什么?
并且,是否有办法将更改后的属性作为参数发送到updateConditions()
?
答案 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。