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
相关产品推荐
相关产品推荐

