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

C#控制台程序字符串大小写兼容的跨环境判断方案咨询

解决C# switch语句大小写兼容的跨环境写法问题

问题原因

  • ||是逻辑或运算符,仅能用于布尔值判断,不能直接在case中连接字符串,因此触发CS0019错误。
  • or是C# 9.0引入的模式匹配语法,VS2022默认支持,但外部编译环境若未启用C# 9.0及以上版本,会因语法不兼容报错。

通用兼容方案

方案1:统一字符串大小写后判断(最简洁可靠)

先将输入字符串转换为统一大小写(推荐使用不依赖区域设置的ToUpperInvariant()或ToLowerInvariant()),再进行switch判断,所有环境都支持基础语法:

string normalizedValue = value.ToUpperInvariant();
switch (normalizedValue) 
{
    case "A":
    case "J":
        cardValue = 11;
        break;
    case "Q":
        cardValue = 12;
        break;
    case "K":
        cardValue = 13;
        break;
}

方案2:使用when子句结合忽略大小写比较

利用C# 7.0及以上支持的when模式匹配,搭配StringComparison.OrdinalIgnoreCase实现忽略大小写判断,跨环境兼容性好:

switch (value) 
{
    case string s when s.Equals("A", StringComparison.OrdinalIgnoreCase):
    case string s when s.Equals("J", StringComparison.OrdinalIgnoreCase):
        cardValue = 11;
        break;
    case string s when s.Equals("Q", StringComparison.OrdinalIgnoreCase):
        cardValue = 12;
        break;
    case string s when s.Equals("K", StringComparison.OrdinalIgnoreCase):
        cardValue = 13;
        break;
}

方案3:强制指定C#语言版本(需外部环境支持)

若坚持使用or语法,需确保编译环境启用C# 9.0及以上版本。在项目文件中添加以下配置,强制指定语言版本:

<PropertyGroup>
    <LangVersion>9.0</LangVersion>
</PropertyGroup>

注:此方案依赖外部编译环境支持对应C#版本,通用性不如前两种。

内容的提问来源于stack exchange,提问作者Siphamandla Dimba

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 20:01:55