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

