HOWTO · Csharp
C# 関数でメソッドをパラメータとして渡す方法
この記事では、C# でメソッドをパラメータとして渡す方法を紹介します。Func デリゲートと 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"));
}