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

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

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

このチュートリアルでは、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

  • C# で関数を終了する
  • C# での抽象関数と仮想関数
  • C# でインライン関数を作成する
  • C# の関数から複数の値を返す