按编号调用方法

haa*_*gel 2 c#

比方说,我有6种方法:Method1(),Method2(),Method3(),Method4(),Method5()Method6().我还有另一种方法,SuperMethod(int nr)它将调用其他方法之一.如果输入SuperMethod为1,Method1()则将被调用,依此类推.

这可以在没有switch语句或堆叠if-else语句的情况下以优雅的方式完成吗?

我应该补充一点,这不是我正在编写的重要生产代码,因此性能不是问题.

use*_*107 6

你可以使用代表,它也有趣解决短程序的现实世界问题:

    public void CollatzTest(int n)
    {
        var f = new Func<int, int>[] { i => i / 2, i => i * 3 + 1 };

        while (n != 1)
            n = f[n % 2](n);
    }
Run Code Online (Sandbox Code Playgroud)

它也适用于动作和直接方法引用

    private void DelegateActionStartTest()
    {
        Action[] Actions = new Action[] { UselesstTest, IntervalTest, Euler13 };

        int nFunction = 2;

        Actions[nFunction]();
    }
Run Code Online (Sandbox Code Playgroud)