C# 中方法的菜单
本文关键字:菜单 方法 | 更新日期: 2023-09-27 18:32:44
我一直在学习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 + ();
}
}
或者有更好的方法可以做到这一点。我只想学习 C# 并以正确的方式进行练习。此外,如果您知道完成这 100 个练习的更好工作流程,那就太好了,我将不胜感激!
您可以创建一个字典,将练习编号作为键,将操作作为值:
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]();
}
}
这里的优点是它支持任何方法名称,并且不需要反射。
您可以使用反射。喜欢这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
public static void Main(String[] args)
{
int opt;
Console.WriteLine("program name");
Console.WriteLine();
for (int i = 1; i <= 100; i++)
{
Console.WriteLine(i + ". exercise " + i);
// or use:
// Console.WriteLine("{0}. exercise {0}", i);
}
Console.WriteLine();
Console.WriteLine("Choose exercise number: ");
opt = int.Parse(Console.ReadLine());
MethodInfo info = (typeof(Program)).GetMethod("Exercise" + opt.ToString());
//then call the exercise#
info.Invoke(null, null);
Console.ReadLine();
}
public static void Exercise1()
{
Console.WriteLine("Exercise 1 executing..");
}
public static void Exercise2()
{
Console.WriteLine("Exercise 2 executing..");
}
}
}
你必须编写自己的练习3,...,练习100。
基本上,您希望根据用户选择动态调用方法。那我必须用反思。
如果你正在学习C#,我认为这是一个高级主题。无论如何检查这个:http://www.dotnetperls.com/getmethod
希望这有帮助。
干杯
您可以使用
for 循环来不断增加数字;
static void Main(string[] args)
{
Console.WriteLine("program name");
Console.WriteLine();
for (int i = 1; i <= 100; i++)
{
Console.WriteLine(i + ". exercise " + i);
}
}
循环意味着整数 i 的循环,直到它小于或等于 100 并每次递增 1 (i++)