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

C#报CS0103错误:Add/Subtract等不存在于当前上下文如何解决

C# 简易计算器CS0103错误排查与修正

错误原因

CS0103错误代表当前作用域内不存在被引用的标识符,你的代码报错和Console.ReadLine()赋值逻辑无关,是两个基础C#语法错误导致的:

  • switch分支语法使用错误:C#中switch(变量)的语法逻辑,是自动将括号内的变量和每个case后的值做等值匹配,不需要你在case后写变量 == 值的判断式。你写的case thing == Add:会被编译器识别为「判断thing == Add这个布尔表达式的结果是否匹配」,同时会直接去找名为Add/Subtract/Multiply/Divide的变量、常量或方法定义。
  • 字符串值未正确标记:你想要匹配用户输入的运算关键词本质是字符串类型的值,C#中字符串字面量必须用双引号包裹,裸写的Add会被编译器识别为标识符(变量/类/方法名),而非字符串内容,你本身没有定义过这些名称的标识符,自然会触发不存在的错误。

修正后可运行代码

下面是修正语法后的示例,额外加了输入前后空格清理、大小写兼容,同时支持用户输入选项字母或完整运算名:

using System;

namespace Calculator
{
    class CalculatorProgram
    {
        static void Main()
        {
            Console.WriteLine("Welcome to Calculator! What do you want to do?");
            Console.WriteLine("a) Add          b) Subtract         c)Multiply         d)Divide");
            // 清理输入前后空格、转小写,降低用户输入格式导致的匹配失败问题
            string userInput = Console.ReadLine().Trim().ToLower();
            switch (userInput)
            {
                case "a":
                case "add":
                    Console.WriteLine("Add");
                    break;
                case "b":
                case "subtract":
                    Console.WriteLine("sample");
                    break;
                case "c":
                case "multiply":
                    Console.WriteLine("Test");
                    break;
                case "d":
                case "divide":
                    Console.WriteLine("no.");
                    break;
                default:
                    Console.WriteLine("these arent important");
                    break;
            }
        }   
    }
}

语法补充说明

C# switch语句的case标签后只能跟随编译期可确定的常量值,不支持写入带变量的条件判断表达式。如果需要实现非等值的复杂分支判断,应当使用if/else结构实现。

内容的提问来源于stack exchange,提问作者PAKISTANI MAPPING 7

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:45:50