(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() ?

(e, v) =>在c#和改变属性作为参数

第二个问题:

可以将更新后的PropertyName发送到updateConditions()。因为vPropertyChangedEventArgs类型,所以它有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。