C#编写控制台菜单提示命名空间不能直接包含字段或方法求助
问题原因
- 报错的直接原因是你把
FirstChoice方法定义在了Program类的外部,直接归属到pilmeny.cs命名空间下,C#语法规定字段、方法这类成员必须包裹在类/结构/枚举这类类型定义内部,不允许直接放在命名空间层级。 - 代码还存在其他隐含问题:你调用了
SecondChoice、ThirdChoice、FourthChoice三个方法但没有实现,运行时会报找不到方法的错误;menuOptions数组中"Avsluta字符串后面带了非法换行,会编译报错;命名空间名称带.cs不符合C#命名规范,建议调整。
修正方案
把所有自定义方法都移动到Program类内部,补充缺失的方法实现,修正字符串的换行问题,调整后的完整代码如下:
using System; // 命名空间去掉.cs后缀,符合C#命名规范 namespace pilmeny { class Program { static void Main(string[] args) { // 修正字符串里的非法换行 string[] menuOptions = new string[] { "Första ", "Andra ", "Tredje ", "Avsluta" }; int menuSelect = 0; while(true){ Console.Clear(); Console.CursorVisible = false; if (menuSelect == 0) { Console.WriteLine("* " + menuOptions[0] + "<--"); Console.WriteLine(menuOptions[1]); Console.WriteLine(menuOptions[2]); Console.WriteLine(menuOptions[3]); } else if (menuSelect == 1){ Console.WriteLine(menuOptions[0]); Console.WriteLine("* " + menuOptions[1] + "<--"); Console.WriteLine(menuOptions[2]); Console.WriteLine(menuOptions[3]); } else if (menuSelect == 2){ Console.WriteLine(menuOptions[0]); Console.WriteLine(menuOptions[1]); Console.WriteLine("* " + menuOptions[2] + "<--"); Console.WriteLine(menuOptions[3]); } else if (menuSelect == 3){ Console.WriteLine(menuOptions[0]); Console.WriteLine(menuOptions[1]); Console.WriteLine(menuOptions[2]); Console.WriteLine("* " + menuOptions[3] + "<--"); } var keyPressed = Console.ReadKey(); if (keyPressed.Key == ConsoleKey.DownArrow && menuSelect != menuOptions.Length - 1) { menuSelect++; } else if (keyPressed.Key == ConsoleKey.UpArrow && menuSelect >= 1){ menuSelect--; } else if (keyPressed.Key == ConsoleKey.Enter){ switch (menuSelect){ case 0: FirstChoice(); break; case 1: SecondChoice(); break; case 2: ThirdChoice(); break; case 3: FourthChoice(); break; } } } } // 所有自定义方法都移入Program类内部 public static void FirstChoice(){ Console.WriteLine("Första valet"); Console.WriteLine("Tryck Enter för att återgå till menyn"); Console.ReadKey(); } // 补充缺失的方法实现 public static void SecondChoice(){ Console.WriteLine("Andra valet"); Console.WriteLine("Tryck Enter för att återgå till menyn"); Console.ReadKey(); } public static void ThirdChoice(){ Console.WriteLine("Tredje valet"); Console.WriteLine("Tryck Enter för att återgå till menyn"); Console.ReadKey(); } public static void FourthChoice(){ // 退出程序逻辑 Console.WriteLine("Program avslutas..."); Environment.Exit(0); } } }
内容的提问来源于stack exchange,提问作者JohannaH
相关产品推荐
相关产品推荐

