如何在C#的Switch Case中执行其他Case的逻辑代码?
在C# Switch中复用其他Case逻辑的方法
方法一:使用goto跳转结合条件控制
如果希望case 5执行case 3和case 4的逻辑,同时保留case 3、case 4单独执行时的原有行为,可以通过goto加条件break实现:
switch(foo) { case 3: goto Case3Logic; case 4: goto Case4Logic; case 5: goto Case3Logic; Case3Logic: // something(case3的逻辑) if (foo != 5) break; // 仅非case5场景执行完跳出 Case4Logic: // something else(case4的逻辑) break; }
这个结构的执行逻辑:
- 当
foo=3时,执行Case3Logic后直接break,不会触发Case4Logic - 当
foo=4时,直接执行Case4Logic后break - 当
foo=5时,先执行Case3Logic,因foo!=5不成立,不触发break,自动流转到Case4Logic执行,最后break
方法二:调整Case顺序利用Goto流转
也可以通过调整case顺序,让case 5直接触发case 3的逻辑,再通过条件判断流转到case 4:
switch(foo) { case 3: // something(case3的逻辑) if (foo !=5) break; // 非case5场景执行完跳出 case 4: // something else(case4的逻辑) break; case 5: goto case 3; // 触发case3逻辑,进而流转到case4 }
这种方式下:
foo=3执行完自身逻辑后直接breakfoo=4直接执行自身逻辑后breakfoo=5通过goto进入case3,执行完后因foo!=5不成立,继续执行case4的逻辑,最后break
内容的提问来源于stack exchange,提问作者pureCod
相关产品推荐
相关产品推荐

