C#でのactionとfuncの違いは何ですか?

ActionとFuncは、C#で使われる2つの異なるデリゲート型であり、その違いは引数と戻り値の違いにあります。

  1. Actionは、戻り値のないデリゲート型です。最大16個の入力パラメータを受け入れることができますが、戻り値はありません。例えば、Actionデリゲートは、引数のないメソッドを表すことも、複数の引数があるが戻り値がないメソッドを表すこともできます。

日本語で自然に言い換えると:例:

Action<int, string> action = (x, y) => Console.WriteLine($"Action: {x}, {y}");
action(10, "Hello");

ここでのActionデリゲートは、int型のパラメータとstring型のパラメータを受け取り、それらをコンソールに出力します。

  1. Funcは戻り値を持つデリゲート型です。最大16個の入力パラメーターを受け入れ、1つの値を返すことができます。例えば、Funcデリゲートは引数を持たずにint型の値を返すメソッドを表すことができます。また、複数の引数を持ち、string型の値を返すメソッドを表すこともできます。

日本語で適切に言い換えるとどうなりますか?

Func<int, int, string> func = (x, y) => $"Func: {x + y}";
string result = func(10, 20);
Console.WriteLine(result);

このFuncデリゲートは、2つのint型のパラメーターを受け取り、それらの和を文字列型の結果として返します。

要点:ActionとFuncはどちらもデリゲートの型であり、メソッドの参照を表します。その違いは、Actionは戻り値を持たず、Funcは戻り値を持つことです。

bannerAds