用于控制台应用程序的基于文本的菜单类
这个类通过使用委托,帮助你在控制台应用程序中创建和使用菜单。它将向你展示数组列表和委托的基础知识。
引言
这是我的第一篇文章,可能包含错误,语言可能不够完美,但我会不断更新和编辑它,直到它变得更好,所以,我需要你的反馈。
几乎每个用 C# 编写的基于控制台的程序都会使用 Console.ReadLine()
来读取数据。通常,程序员会使用 if
-else
语句来处理数据输入,尤其是在从菜单中输入选项时。这个有趣的类将教你集合和委托的基础知识,同时为更强大的菜单类提供一个良好的框架。
菜单类及其接口
菜单类非常易于使用;只需实例化它,并使用 Add
方法向菜单添加新选项,最后,使用 Show
方法打印它并让它处理用户的选择。
它的工作原理如下:每个菜单选项都是一个 MenuItem
类。它只不过是一个包含选项描述和 delegate
(一个指向函数的对象)的对象,当且如果选择了该选项时,将调用该对象。这个委托将指向处理该选择的函数。
MenuItem
s 存储在 ArrayList
中,这是一个非常有用的集合类。集合类不言自明:它保存对象的集合,通常提供搜索、删除和对象操作功能。ArrayList
非常简单;名称 Array
来自于它可以转换为任何类型的 Array
,并且我将使用它,因为 Menu
类不需要 Hashtable
集合或 Dictionary
集合的强大功能,这些是更增强的集合类。ArrayList
对我们来说就足够了。
创建和显示菜单
首先,编写处理用户选择和委托的函数。你会看到这有多么简单。我们的 Menu
类使用 MenuCallback
委托,它不返回任何内容并且没有参数。每当你使用委托时,你需要
- 创建一个新的委托类型,并且
- 使用
new
关键字存储一个新的委托。
private static MenuCallback mcOption1 = new MenuCallback(Option1);
private static MenuCallback mcOption2 = new MenuCallback(Option2);
private static void Option1()
{
Console.WriteLine("Option 1 chosen.");
}
private static void Option2()
{
Console.WriteLine("Option 2 chosen.");
}
其次,创建一个新的 Menu
实例,并将委托和选项添加到它。然后,显示它。这也很简单。
Menu m = new Menu();
m.Add("Option 1", mcOption1);
m.Add("Option 2", mcOption2);
m.Show();
现在,一切都完成了。Menu
类将处理用户的输入,并使用你创建的委托调用所需的函数。示例将更好地展示所有内容。