C#中的方法菜单

1 c# methods workflow menu class

我一直在学习C#,现在我要做一些作业。在Java中,我在bluej IDE中通过为每个练习创建类来做到这一点,但是搜索并询问一些朋友,他们告诉我这不能在C#上完成。所以我需要一个菜单​​。。。有大约100个练习,所以我不想使用Switch-Case。

我想要这样的东西:

    class Program{
        public static void Main(String[] args){
        int opt;

        Console.WriteLine("program name");
        Console.WriteLine();
        Console.WriteLine("1. exercise 1");
        Console.WriteLine("2. exercise 2");
        Console.WriteLine("3. exercise 3");
        Console.WriteLine("4. exercise 4"); // to 100
        Console.WriteLine();

        Console.WriteLine("Choose exercise number: ");
        opt = int.Parse(Console.ReadLine());

        //then call the exercise#
        Exercise + opt + ();
        }
     }
Run Code Online (Sandbox Code Playgroud)

还是有更好的方法来做到这一点。我只想学习C#,并以适当的方式进行练习。另外,如果您知道一个更好的工作流程来完成这100个练习,那就太好了,非常感谢!

Oro*_*343 5

您可以创建一个字典,以练习编号为键,以Action作为值:

class Program
{
    static Dictionary<int, Action> exercises = new Dictionary<int, Action>
    {
        // put the numbers with the exercise method here:
        {1, () => Exercise1()},
        {2, () => Exercise2()},
    };
    public static void Main(String[] args)
    {
        int opt;

        Console.WriteLine("program name");
        Console.WriteLine();
        // Print valid names - Alternatively get them from a list
        foreach (int i in exercises.Keys)
        {
            Console.WriteLine(string.Format("{0}. Exercise {0}", i));
        }
        Console.WriteLine();

        Console.WriteLine("Choose exercise number: ");
        opt = int.Parse(Console.ReadLine());

        // call like this:
        exercises[opt]();
    }
 }
Run Code Online (Sandbox Code Playgroud)

这样做的好处是它支持任何方法名称,并且不需要反射。