C# 関数でメソッドをパラメータとして渡す方法
Minahil Noor
2024年2月16日
この記事では、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# のオプションパラメータ
- C# でオブジェクトのプロパティでリストを並べ替える方法
- C# は get メソッドに複数のパラメーターを渡する
- C# で静的メソッドをオーバーライドする
- C# のメソッドグループ