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