Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#切换:未通过其他情况限制的情况_C#_Switch Statement - Fatal编程技术网

C#切换:未通过其他情况限制的情况

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

这个问题是对这个问题的补充

在C#中,一个开关情况不能过渡到其他情况,这会导致编译错误。在这种情况下,我只是将一些数字添加到所选月份及其后每个月的月份总数中。(简单的例子,不是真实的)

在C#中是否有一种逻辑上的替代方案,而不必写出大量的if语句

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: