C# の invoke で戻り値を取得する方法
C#では、Invokeメソッドを使用してメソッドやデリゲートを呼び出し、その戻り値を取得できます。InvokeメソッドはDelegateクラスのメンバーであり、どのような種類のデリゲートに対しても呼び出すことができます。Invokeメソッドを使用して戻り値を取得する例を以下に示します。
using System;
public class Program
{
public static void Main()
{
Func<int, int, int> add = Add;
int result = (int)add.Invoke(3, 4);
Console.WriteLine("Result: " + result);
}
public static int Add(int a, int b)
{
return a + b;
}
}
上のサンプルではAddメソッドを定義し、2つの整数を引数として受け取り、その和を返します。また、Func<int, int, int>デリゲート型の変数addを定義し、Addメソッドを指します。次に、Invokeメソッドを使ってaddデリゲートを呼び出し、引数として3と4を渡します。最後に、返り値を整数型に変換し、コンソールに表示します。
なお、Invokeメソッドは、もう1つのDelegateクラスのメソッドであるDynamicInvokeメソッドでも代用できます。DynamicInvokeメソッドは、object型の配列のパラメーターを受け取り、任意の型のデリゲートを呼び出すことが可能です。DynamicInvokeメソッドを使った例は上記のものと同様で、InvokeをDynamicInvokeに置き換えるだけです。