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个练习,那就太好了,非常感谢!
您可以创建一个字典,以练习编号为键,以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)
这样做的好处是它支持任何方法名称,并且不需要反射。