C# で関数をパラメーターとして渡す

Muhammad Maisam Abbas 2024年2月16日
  1. C# で Func<> デリゲートを使用して関数をパラメーターとして渡す
  2. C# の Action<> デリゲートを使用して、関数を別の関数内のパラメーターとして渡す
C# で関数をパラメーターとして渡す

このチュートリアルでは、C# の別の関数内で関数をパラメーターとして渡すメソッドを紹介します。

C# で Func<> デリゲートを使用して関数をパラメーターとして渡す

Func<T1, T-return> デリゲートは、T1 というパラメータと T-return という戻り値の型を持つ関数を定義します。Func<T1, t-return> デリゲートを使用して、関数を別の関数内のパラメーターとして渡すことができます。次のコード例は、C# の Func<> デリゲートを使用して、関数を別の関数内のパラメーターとして渡す方法を示しています。

using System;

namespace pass_function_as_parameter {
  class Program {
    static int functionToPass(int x) {
      return x + 10;
    }
    static void function(Func<int, int> functionToPass) {
      int i = functionToPass(22);
      Console.WriteLine("i = {0}", i);
    }
    static void Main(string[] args) {
      function(functionToPass);
    }
  }
}

出力:

i = 32

整数値をパラメーターとして受け取り、それを 10 でインクリメントし、結果を整数値として返す関数 functionToPass(int x) を定義しました。functionToPass() 関数をパラメーターとして function() 関数に Func<int, int> デリゲートで渡しました。値 22function() 関数内の functionToPass() 関数に渡しました。メイン関数では、function(functionToPass) 関数呼び出しで関数を呼び出しました。Func<> デリゲートは、何らかの値を返す関数を渡すためにのみ使用できます。

C# の Action<> デリゲートを使用して、関数を別の関数内のパラメーターとして渡す

値を返さない関数を渡したい場合は、C# で Action<> デリゲートを使用する必要があります。Action<T> デリゲートは、関数デリゲートと同じように機能します。T パラメータで関数を定義するために使用されます。Action<> デリゲートを使用して、関数をパラメーターとして別の関数に渡すことができます。次のコード例は、C# の Action<> デリゲートを使用して、関数を別の関数内のパラメーターとして渡す方法を示しています。

using System;

namespace pass_function_as_parameter {
  class Program {
    static void functionToPass2(int x) {
      int increment = x + 10;
      Console.WriteLine("increment = {0}", increment);
    }
    static void function2(Action<int> functionToPass2) {
      functionToPass2(22);
    }
    static void Main(string[] args) {
      function2(functionToPass2);
    }
  }
}

出力:

increment = 32

整数値をパラメーターとして受け取り、それを 10 でインクリメントして結果を出力する関数 functionToPass2(int x) を定義しました。functionToPass2() 関数をパラメーターとして function() 関数に Action<int> デリゲートで渡しました。値 22function2() 関数内の functionToPass2() 関数に渡しました。メイン関数では、function2(functionToPass2) 関数呼び出しで関数を呼び出しました。Action<> デリゲートは、値を返さない関数を渡すためにのみ使用できます。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Csharp Function