C# switch语句使用位运算符时出现CS0152重复标签错误如何解决
CS0152 错误原因说明
核心原因是你写的case (2 | 4):在编译阶段计算出的常量值就是6,和后续显式声明的case 6:标签重复,违反了C# switch语句中case标签值必须唯一的规则。
具体运算逻辑说明
C#中|是按位或运算符,不是“匹配多个值”的语法:
- 整数2的二进制为
010 - 整数4的二进制为
100 - 按位或运算规则为对应二进制位只要有一个为1结果就为1,最终计算结果为
110,对应十进制值就是6
所以你写的case (2 | 4):和case 6:是完全等价的重复标签,编译器因此报错。
若你需要匹配2或4走同一个分支,正确写法如下
switch(aVal) { case 2: case 4: { // 对应业务逻辑 break; } case 5: { break; } case 6: { break; } }
内容的提问来源于stack exchange,提问作者Jesus
相关产品推荐
相关产品推荐

