1

我知道 func 是什么,但无法理解以下代码:

有一个简单的属性:

    public Func<DomainFacade> BusinessFacadeFactory { get; set; }

这就是属性的设置方式:

    this.BusinessFacadeFactory = () => new DomainFacade();

现在这种设置属性的方式,是匿名方法还是别的什么?

4

5 回答 5

5

这称为lambda 表达式

它是一种更紧凑的匿名方法形式。

于 2012-10-19T12:47:06.983 回答
3

() => new DomainFacade()是一个 lambda 表达式

它是代替 a 编写 的未命名方法编译器将其转换为委托实例delegate

它的真实格式是

(parameter)=>expression or a statement block

由于func需要delegate分配 a,我们可以编写 alambda expression而不是在delegate内部将其转换为委托实例。

所以,

()表示一个空参数

new DomainFacade();是表达式

内部被编译器转换为委托

于 2012-10-19T12:56:01.923 回答
1

() => new DomainFacade()是一个lambda 表达式
它是一个内联方法,作为委托值返回。

于 2012-10-19T12:47:31.460 回答
1

正如其他人所说,这是一个 lambda 表达式。以下是它会以这样的长格式分解的内容:

this.BusinessFacadeFactory = () => new DomainFacade();

然后

this.BusinessFacadeFactory = new delegate(){ return new DomainFacade()};

然后

...
BusinessFacadeFactory = OnBusinessFacadeFactory; 
...

private DomainFacade OnBusinessFacadeFactory()
{
  return new DomainFacade()
}
于 2012-10-19T12:48:38.400 回答
1

它是一个 lambda 表达式,是创建匿名方法的简写。

() 

是输入参数(即无)

new DomainFacade(); 

是方法体。

于 2012-10-19T12:48:53.890 回答