Mik*_*den 5 c# switch-statement
这个问题是怎么样的一个附加到这个的问题
在C#中,交换机案例无法通过其他情况,这会导致编译错误.在这种情况下,我只是在所选月份和之后的每个月的总月份中添加一些数字.(简单的例子,并不意味着真实)
switch (month)
{
case 0:
add something to month totals
case 1:
add something to month totals
case 2:
add something to month totals
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
在C#中是否有一个合乎逻辑的替代方案而不必写出大量的if语句?
if (month <= 0)
add something to month
if (month <= 1)
add something to month
if (month <= 2)
add something to month
.... etc
Run Code Online (Sandbox Code Playgroud)
Ben*_*man 11
通常,当您看到来自巨大的switch语句的噪声或许多if语句可能属于多个块时,您试图抑制糟糕的设计.
相反,如果您实现规范模式以查看是否匹配某些内容,然后对其采取行动,该怎么办?
foreach(MonthSpecification spec in this.MonthSpecifications)
{
if(spec.IsSatisfiedBy(month))
spec.Perform(month);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以添加与你想要做的匹配的不同规格.
很难说出你的域名是什么,所以我的例子可能有点人为.
在C#switch语句中,只有在您想要通过的情况没有声明时,才能通过案例
switch(myVar)
{
case 1:
case 2: // Case 1 or 2 get here
break;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要声明,你必须使用可怕的GOTO
switch(myVar)
{
case 1: // Case 1 statement
goto case 2;
case 2: // Case 1 or 2 get here
break;
}
Run Code Online (Sandbox Code Playgroud)