C#如何检查用户输入的运算符是否存在于指定字符串数组中
问题解决:判断用户输入是否在预设运算符数组中
错误原因
你遇到的CS0019报错是因为直接用字符串类型的operation和字符串数组类型的func做相等性比较,C#不支持这两种类型直接用!=运算符判断。
解决方案
方案1:使用数组内置Contains()方法(最简写法)
首先在代码文件顶部引入Linq命名空间:
using System.Linq;
然后把你原来的判断逻辑:
if (operation != func) { throw new Exception(); }
替换为:
if (!func.Contains(operation)) { throw new Exception(); }
该逻辑会直接判断func数组中是否包含用户输入的operation值,不包含就抛出异常,完全匹配你的需求。
方案2:无Linq依赖的手动遍历写法
如果你不想引入Linq命名空间,也可以手动遍历数组做判断,替换原有判断逻辑即可:
bool isLegalOperation = false; foreach (string op in func) { if (op == operation) { isLegalOperation = true; break; } } if (!isLegalOperation) { throw new Exception(); }
优化建议
- 可以给异常添加自定义提示信息,方便后续调试:
throw new Exception("输入的运算符不合法") - 如果后续运算符列表会持续扩充,建议把
func改为HashSet<string>类型,查找效率更高。
内容的提问来源于stack exchange,提问作者MHX
相关产品推荐
相关产品推荐

