匿名関数は、この関数を呼び出す必要があるので、匿名関数を無名関数に変換するまで、匿名関数は名前付き関数ほど強力ではないと思っていました。簡単な例:希望匿名関数は非匿名関数と同じくらい役に立ちます
public void Init(List<int> numbers, List<string> texts)
{
int n = GetFirst(numbers);
string t = GetFirst(texts);
}
private T GetFirst<T>(List<T> list)
{
return list[0];
}
は
GenFunc<T, List<T>, T> getFirst = list => list[0];
ようなものを定義し、代わりに、インスタンスメソッドGetFirst
のものを使用することであろう。 Func
を使用することは不可能です。これは、ジェネリックパラメータが異なるセマンティックを持つためです。私は、したがって、デリゲート(Func
の「ベース」)
delegate T GetFirstDelegate<T>(List<T> list);
定義が、私は、定義された一般的なパラメータを使用して、それをインスタンス化することができ、例えば
GetFirstDelegate<string> getFirst = list => list[0];
が、私は、プレースホルダの一般的なパラメータを持つには希望しないよう:
GetFirstDelegate<T> getFirst = list => list[0];
これは私が匿名メソッドは、名前のメソッドとしてmightlyないと思います - 少なくとも、一般的な使用量の面で - またはAM私は何かを欠いている?
、あなたのために例えば、LINQは既にIEnumerに '.First()'を定義していますできれば ' –