C# を使用してメソッドをパラメータとして渡す 質問する

C# を使用してメソッドをパラメータとして渡す 質問する

パラメータ タイプと戻り値はすべて同じですが、名前とブロックが異なるメソッドがいくつかあります。実行するメソッドの名前を、渡されたメソッドを呼び出す別のメソッドに渡したいと思います。

public int Method1(string)
{
    // Do something
    return myInt;
}

public int Method2(string)
{
    // Do something different
    return myInt;
}

public bool RunTheMethod([Method Name passed in here] myMethodName)
{
    // Do stuff
    int i = myMethodName("My String");
    // Do more stuff
    return true;
}

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

このコードは機能しませんが、これが私がやろうとしていることです。パラメータを定義する必要があるため、RunTheMethod コードをどのように記述すればよいのかがわかりません。

ベストアンサー1

Func.NET 3.5 のデリゲートをメソッドのパラメータとして使用できますRunTheMethodFuncデリゲートを使用すると、特定の型のパラメータをいくつか受け取り、特定の型の引数を 1 つ返すメソッドを指定できます。次に、機能する例を示します。

public class Class1
{
    public int Method1(string input)
    {
        //... do something
        return 0;
    }

    public int Method2(string input)
    {
        //... do something different
        return 1;
    }

    public bool RunTheMethod(Func<string, int> myMethodName)
    {
        //... do stuff
        int i = myMethodName("My String");
        //... do more stuff
        return true;
    }

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

おすすめ記事