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

如何在C# Switch语句中对所有枚举值结合When条件判断字符串?

C#中Switch语句匹配所有枚举值并结合When条件的实现方法

可以直接在Switch语句中实现这个需求,不需要额外的前置if判断,利用C#的**弃元符号_**就能匹配所有枚举值,再结合when条件过滤字符串即可,具体实现如下:

核心实现代码

switch (orderType)
{
    // 用_匹配所有枚举值,结合when判断action条件
    case _ when action == ApiParameterConstants.ActionReturn:
        return ApiConstants.HomeDeliveryOrderReturnEndpoint;
    // 原有分支保留
    case OrderType.HomeDelivery when action == ApiParameterConstants.ActionAccept:
    case OrderType.DoorToDoor when action == ApiParameterConstants.ActionAccept:
        return ApiConstants.HomeDeliveryOrderAcceptEndpoint;
    // 其他自定义case分支
    default:
        return string.Empty;
}

关键说明

  • 弃元_是C#支持的语法,它可以匹配任何输入值,这里用来覆盖所有OrderType的枚举选项,完全替代你示意的OrderType.All效果。
  • 这个写法比前置if判断更紧凑,逻辑也更集中在Switch语句内,可读性更强。

可选的严谨性优化

如果需要确保orderType是合法的枚举值(避免出现强制转换产生的非法枚举值),可以在when条件中补充校验:

case _ when action == ApiParameterConstants.ActionReturn && Enum.IsDefined(typeof(OrderType), orderType):
    return ApiConstants.HomeDeliveryOrderReturnEndpoint;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:06:51