无法理解func <type>代码</type>

时间:2012-10-19 12:45:56

标签: c#

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

有一个简单的属性:

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

这就是财产的设定方式:

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

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

5 个答案:

答案 0 :(得分:5)

这称为lambda expression

这是一种更紧凑的匿名方法。

答案 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(); 

是方法体。