C#切换:未通过其他情况限制的情况
这个问题是对这个问题的补充 在C#中,一个开关情况不能过渡到其他情况,这会导致编译错误。在这种情况下,我只是将一些数字添加到所选月份及其后每个月的月份总数中。(简单的例子,不是真实的) 在C#中是否有一种逻辑上的替代方案,而不必写出大量的if语句C#切换:未通过其他情况限制的情况,c#,switch-statement,C#,Switch Statement,这个问题是对这个问题的补充 在C#中,一个开关情况不能过渡到其他情况,这会导致编译错误。在这种情况下,我只是将一些数字添加到所选月份及其后每个月的月份总数中。(简单的例子,不是真实的) 在C#中是否有一种逻辑上的替代方案,而不必写出大量的if语句 if (month <= 0) add something to month if (month <= 1) add something to month if (month <= 2) add something
if (month <= 0)
add something to month
if (month <= 1)
add something to month
if (month <= 2)
add something to month
.... etc
如果(月已经有一个问题涉及此主题:
编辑:
先生们,我指出这一点的主要目的是,两个名称几乎相同的问题给问题库增添了混乱。通常,当你看到一个巨大的switch语句或多个if语句(可能落入多个块)发出的噪音时,你是在试图抑制一个糟糕的设计
相反,如果您实现了规范模式以查看是否有匹配的内容,然后对其进行操作,会怎么样
foreach(MonthSpecification spec in this.MonthSpecifications)
{
if(spec.IsSatisfiedBy(month))
spec.Perform(month);
}
然后,您可以添加不同的规格,以匹配您要做的
很难说你的域是什么,所以我的例子可能有点做作。你在添加常量吗?如果是这样,也许类似的东西可以工作(C语法):
const int addtotals[]={123456,…,789};
对于(i=month;i在C#switch语句中,只有在没有您想要通过的语句的情况下,您才能通过案例
switch(myVar)
{
case 1:
case 2: // Case 1 or 2 get here
break;
}
然而,如果你想在陈述中失败,你必须使用可怕的后藤
switch(myVar)
{
case 1: // Case 1 statement
goto case 2;
case 2: // Case 1 or 2 get here
break;
}
按相反顺序写入开关盒
case 2:
case 1:
case 0:
break;
default:
希望这能有所帮助!我看不出两者之间的关系(除了标题)。问题44905是关于某些限制的起源。这个问题是关于如何克服一个特定的限制(在另一个问题中甚至没有提到)。如果你想指出标题有问题,那么也许你不应该添加一个标签replicate
,而应该更改标题或明确指出你认为它有问题。为什么后藤很可怕?而且,使用“后藤案例”不是“后藤陈述”。我认为使用“恐惧”这个词是有道理的。我可以很容易地想象程序员在switch语句中没有使用goto case
,使它从一个案例跳到另一个案例,回到原来的案例。goto导致意粉,意粉导致仇恨,仇恨导致痛苦。goto是通向黑暗面的道路。C#仍然需要一个流程控制如果存在任何其他代码,则案例之间的rol语句(中断/继续/返回/转到/转到案例/抛出)。
switch(myVar)
{
case 1: // Case 1 statement
goto case 2;
case 2: // Case 1 or 2 get here
break;
}
case 2:
case 1:
case 0:
break;
default: