C#切换/中断

Rus*_*ell 13 c# break switch-statement

看来我需要在使用C#的switch语句中的每个case块中使用break.

我可以在其他语言中看到这个原因,您可以通过下一个案例陈述.

案例块是否可能落入其他案例块?

非常感谢,非常感谢!

Guf*_*ffa 32

是的,您可以通过两种方式进入下一个案例块.您可以使用不需要休息的空案例,也可以使用goto跳转到下一个(或任何)案例:

switch (n) {
  case 1:
  case 2:
  case 3:
    Console.WriteLine("1, 2 or 3");
    goto case 4;
  case 4:
    Console.WriteLine(4);
    break;
}
Run Code Online (Sandbox Code Playgroud)

  • @Brian:如果你愿意,你可以把它叫做别的东西,但上面的代码完全合法.从技术上来说,代码当然不会被实现为一系列代码块,但是在任何语言中都不是这样,大多数控制结构也是如此.你链接到的错误与空案件(或任何你喜欢称之为的)无关,因为它不是空的. (4认同)

Wil*_*ill 6

执行"休息"是为了阻止错误.如果你需要强制跌倒然后使用"goto case"(用适当的值替换)

以下示例显示了您可以执行的操作:

switch(n)
{
    case 1:
    case 2:
      //do something for 1+2
      //...
      goto case 3;
    case 3:
      //do something for 3, and also extra for 1+2
      //...
      break;
    default:
      //do something for all other values
      //...
      break;
}
Run Code Online (Sandbox Code Playgroud)

请参阅http://msdn.microsoft.com/en-us/library/06tc147t%28VS.80%29.aspx

  • 如果它不支持通过,则没有可防止的错误.无论休息是否存在,如果语言不支持,它就不支持它,底线.编译时间强制执行`break;`并不会阻止你意外地通过,因为正如你所说,甚至不支持通过,所以这样的事故不会发生...... (2认同)