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

Minahil Noor 2024年2月16日
  1. C# で Func デリゲートを使ってメソッドをパラメータとして渡す
  2. C# でメソッドをパラメータとして渡すために Action デリゲートを使用する
C# 関数でメソッドをパラメータとして渡す方法

この記事では、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

関連記事 - Csharp Parameter