C#におけるfuncデリゲートとactionデリゲートの違い


  1. 戻り値の有無:

    • Funcデリゲートは、戻り値を持つメソッドを参照するために使用されます。たとえば、Func<int, string>は、int型の引数を受け取り、string型の値を返すメソッドを参照するために使用されます。
    • Actionデリゲートは、戻り値を持たないメソッドを参照するために使用されます。たとえば、Action<int>は、int型の引数を受け取り、何も返さないメソッドを参照するために使用されます。
  2. 引数の数:

    • Funcデリゲートは、0個以上の引数を受け取ることができます。たとえば、Func<int, string>は、int型の引数を1つ受け取り、string型の値を返すメソッドを参照します。
    • Actionデリゲートは、0個以上の引数を受け取ることができますが、戻り値を持たないことに注意してください。たとえば、Action<int, string>は、int型とstring型の引数を受け取り、何も返さないメソッドを参照します。
  3. 使用法:

    • Funcデリゲートは、主に戻り値が必要な場合に使用されます。たとえば、データの変換や計算を行うメソッドを参照する際に使用されます。
    • Actionデリゲートは、主に戻り値が不要な場合に使用されます。たとえば、イベントハンドラや処理の実行を行うメソッドを参照する際に使用されます。

以下に、FuncデリゲートとActionデリゲートの使用例を示します。

// Funcデリゲートの使用例
Func<int, string> convertToString = (x) => x.ToString();
string result = convertToString(10); // 結果: "10"
// Actionデリゲートの使用例
Action<int> printNumber = (x) => Console.WriteLine(x);
printNumber(20); // 出力: 20