You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:27:01