システムで明確に定義されているいくつかの一般的な手数料はSystem.Action
、でありSystem.Func
、前者は関数の戻り値で表される関数の値を返しませんでした。さまざまなパラメータの数に適応するために、次の図に示すように、システムは一連のAction
とを定義します。これらの中で、各デリゲートのパラメータタイプは、使用時にカスタマイズできます。つまり、汎用タイプが使用されます。 2つの整数をパラメータとして示すなど、型を返します。次のように表すことができます。Func
double
Func<int, int, double> f = (x, y) => x * 3.0 + y * 2.0;
もう1つの例はvoid
、文字列パラメーターと戻り値の型が1つしかない関数です。これは次のように表すことができます。
Action<string> print = s => Console.WriteLine(s);
またはパラメータなしAction
:
Action showTime = () => Console.WriteLine(DateTime.Now);
デリゲートとラムダ式は通常、関数パラメーターとして使用されます。たとえば、システムにはForEach
リスト(List
)の各要素を処理できる関数があり、この「処理」はAction
デリゲートタイプであるため、ラムダ式をパラメータ。ForEach
関数のプロトタイプは次のとおりです。
List<T>.ForEach(Action<T> a)
ListForEach.csshiyongLambda
式の例ForEach
は、単語内の文字の総数を表示および検索するためのパラメーターとして使用されます。
public class ListForEach
{
static void Main(){
List<string> words = new List<string>(){
"Apple", "Banana", "Orange", "Mango"};
words.ForEach(s => Console.WriteLine(s));
int letters = 0;
words.ForEach(s => letters += s.Length);
Console.WriteLine(letters);
}
}