(e, v) =>在c#和改变属性作为参数
本文关键字:改变 属性 参数 | 更新日期: 2023-09-27 18:08:48
(e, v) =>
在c#中的语法含义是什么?
。
TreeViewModel root = TreeViewModel.initializeRoot(parentStatus, statuses);
root.PropertyChanged += (e, v) => updateConditions();
我知道我正在注册以侦听根对象的属性更改。如果这样的事件发生了,我就调用updateConditions()
方法。但是,中间的(e, v) =>
是什么?
并且,是否有方法将更改的属性作为参数发送到updateConditions()
?
第二个问题:
可以将更新后的PropertyName
发送到updateConditions()
。因为v
是PropertyChangedEventArgs
类型,所以它有PropertyName
属性:
root.PropertyChanged += (e, v) => updateConditions(v.PropertyName);
这是一个Lambda表达式。基本上,它创建了一个调用updateConditions()
的匿名方法,并将事件绑定到该匿名方法。
等于。
private void root_PropertyChanged(object e, PropertyChangeEventArgs v)
{
updateConditions();
}
root.PropertyChanged += root_PropertyChanged
语法(e, v) => (some sort of expression)
创建一个lambda函数,接受参数'e'和'v',然后返回表达式求值的结果。它基本上是一种就地创建功能的方式,所以你不需要定义委派并以那种方式传递一个。在您的示例中,它接受参数e和v,然后简单地返回调用updateConditions()
的结果。关于如何使用这些属性的更多细节,请访问http://www.codeproject.com/Articles/24255/Exploring-Lambda-Expression-in-C。