func とは何かは知っていますが、次のコードを理解できません。
単純なプロパティがあります:
public Func<DomainFacade> BusinessFacadeFactory { get; set; }
プロパティの設定方法は次のとおりです。
this.BusinessFacadeFactory = () => new DomainFacade();
プロパティを設定するこの方法は、匿名メソッドですか、それとも何か他のものですか?
func とは何かは知っていますが、次のコードを理解できません。
単純なプロパティがあります:
public Func<DomainFacade> BusinessFacadeFactory { get; set; }
プロパティの設定方法は次のとおりです。
this.BusinessFacadeFactory = () => new DomainFacade();
プロパティを設定するこの方法は、匿名メソッドですか、それとも何か他のものですか?
これはラムダ式と呼ばれます。
これは匿名メソッドのよりコンパクトな形式です。
() => new DomainFacade()
ラムダ式です
これは、の代わりに記述された名前のないメソッドdelegate
です
。コンパイラはそれをデリゲートインスタンスに変換します。
本当のフォーマットは
(parameter)=>expression or a statement block
を割り当てるfunc
必要があるため、内部でデリゲートインスタンスに変換されるの代わりにを記述することができます。delegate
lambda expression
delegate
それで、
()
空のパラメータを示します
new DomainFacade();
式です
コンパイラによって内部的にデリゲートに変換されます
() => new DomainFacade()
はラムダ式です。
これは、デリゲート値として返されるインライン メソッドです。
他の人が言ったように、これはラムダ式です。長い形式でこのように分解すると、次のようになります。
this.BusinessFacadeFactory = () => new DomainFacade();
それから
this.BusinessFacadeFactory = new delegate(){ return new DomainFacade()};
それから
...
BusinessFacadeFactory = OnBusinessFacadeFactory;
...
private DomainFacade OnBusinessFacadeFactory()
{
return new DomainFacade()
}
これはラムダ式であり、匿名メソッドを作成するための省略形です。
()
入力パラメーターです (つまり、なし)
new DomainFacade();
メソッド本体です。