【发布时间】:2014-03-27 13:39:19
【问题描述】:
我现在正在学习C#,遇到以下情况,有什么更好的做法,复制“EX 1”之类的代码还是使用“EX 2”之类的goto语句?
我不想要个人意见。
// EX 1:
switch (a)
{
case 3:
b = 7;
c = 3; // duplicate code <-|
break; // |
case 4: // |
c = 3; // duplicate code --|
break;
default:
b = 2;
c = 4;
break;
}
// EX 2:
switch (a)
{
case 3:
b = 7;
goto case 4; // not duplicate code and use goto statement
case 4:
c = 3;
break;
default:
b = 2;
c = 4;
break;
}
【问题讨论】:
-
引用C# language specifications,“当一个switch 部分的执行之后是另一个switch 部分的执行时,必须使用显式的
goto case或goto default语句”。跨度> -
在这个特殊的例子中(总共 3 个案例),我更有可能使用 if/else 构造。
-
您提出了一个需要个人意见(“哪个更好”)的问题,但声明您“不想要个人意见”。下定决心 - 你不能两全其美。
-
理想情况下,我会说 a、b 和 c 是相关的,因此应该在类或类的方法中,然后将整个事情排除在外。除非花费很少的精力,否则我喜欢我的箱子是一个衬里,但这是个人喜好。