我知道 func 是什么,但无法理解以下代码:
有一个简单的属性:
public Func<DomainFacade> BusinessFacadeFactory { get; set; }
这就是属性的设置方式:
this.BusinessFacadeFactory = () => new DomainFacade();
现在这种设置属性的方式,是匿名方法还是别的什么?
我知道 func 是什么,但无法理解以下代码:
有一个简单的属性:
public Func<DomainFacade> BusinessFacadeFactory { get; set; }
这就是属性的设置方式:
this.BusinessFacadeFactory = () => new DomainFacade();
现在这种设置属性的方式,是匿名方法还是别的什么?
这称为lambda 表达式。
它是一种更紧凑的匿名方法形式。
() => new DomainFacade()
是一个 lambda 表达式
它是代替 a 编写
的未命名方法编译器将其转换为委托实例delegate
它的真实格式是
(parameter)=>expression or a statement block
由于func
需要delegate
分配 a,我们可以编写 alambda expression
而不是在delegate
内部将其转换为委托实例。
所以,
()
表示一个空参数
new DomainFacade();
是表达式
内部被编译器转换为委托
() => new DomainFacade()
是一个lambda 表达式。
它是一个内联方法,作为委托值返回。
正如其他人所说,这是一个 lambda 表达式。以下是它会以这样的长格式分解的内容:
this.BusinessFacadeFactory = () => new DomainFacade();
然后
this.BusinessFacadeFactory = new delegate(){ return new DomainFacade()};
然后
...
BusinessFacadeFactory = OnBusinessFacadeFactory;
...
private DomainFacade OnBusinessFacadeFactory()
{
return new DomainFacade()
}
它是一个 lambda 表达式,是创建匿名方法的简写。
()
是输入参数(即无)
new DomainFacade();
是方法体。