C# 関数でメソッドをパラメータとして渡す方法

  1. C# で Func デリゲートを使ってメソッドをパラメータとして渡す
  2. C# でメソッドをパラメータとして渡すために Action デリゲートを使用する

この記事では、C# の関数でメソッドをパラメータとして渡す方法の違いを紹介します。

  • Func デリゲートを使う
  • Action デリゲートを使う

C# で Func デリゲートを使ってメソッドをパラメータとして渡す

ここでは、組み込みのデリゲート Func を使用して、メソッドをパラメータとして渡します。デリゲートは関数ポインタのように動作します。このデリゲートを使用するための正しい構文は以下の通りです。

public delegate returnType Func<in inputType, out returnType>(InputType arg);

組み込みのデリゲート Func は N 個のパラメータを持つ。そのパラメータの詳細は以下の通りである。

パラメータ 説明
inputType 強制的 このデリゲートの入力値の種類です。入力値の数は N 個である。
returnType 強制的 これは戻り値の型です。このデリゲートの最後の値が戻り値の型とみなされます。

以下のプログラムは、Func デリゲートを使ってメソッドをパラメータとして渡す方法を示しています。

public class MethodasParameter
{
    public int Method1(string input)
    {
        return 0;
    }

    public int Method2(string input)
    {
        return 1;
    }

    public bool RunMethod(Func<string, int> MethodName)
    {
        int i = MethodName("This is a string");
        return true;
    }

    public bool Test()
    {
        return RunMethod(Method1);
    }
}

C# でメソッドをパラメータとして渡すために Action デリゲートを使用する

また、組み込みのデリゲート Action を使用してメソッドをパラメータとして渡すこともできます。このデリゲートを使用するための正しい構文は以下の通りです。

public delegate void Action<in T>(T obj);

組み込みのデリゲート Action は 16 個のパラメータを入力として持つことができる。そのパラメータの詳細は以下の通りである。

パラメータ 説明
T 強制的 このデリゲートの入力値の種類です。16 個の入力値を持つことができます。

以下のプログラムは、Action デリゲートを使ってメソッドをパラメータとして渡す方法を示しています。

public class MethodasParameter
{
    public int Method1(string input)
    {
        return 0;
    }

    public int Method2(string input)
    {
        return 1;
    }

    public bool RunTheMethod(Action myMethodName)
 {
      myMethodName();
      return true;
 }
  RunTheMethod(() => Method1("MyString1"));
}

関連記事 - Csharp Method

  • C# でオブジェクトのプロパティでリストを並べ替える方法
  • 関連記事 - Csharp Parameter

  • C# でオブジェクトのプロパティでリストを並べ替える方法
  • comments powered by Disqus