【问题标题】:Is there a VB .NET equivalent to C Fall Through switch?是否有等效于 C Fall Through 开关的 VB .NET?
【发布时间】:2016-09-05 14:28:51
【问题描述】:

这不是这个问题的重复:VB.NET Stacking Select Case Statements together like in Switch C#/Java。这里提供的答案没有回答我的问题。那里的答案是说我知道VB .Net中有一个自动中断。请问有没有什么办法。

在 C 中,可以这样做:

int i = 1;
switch (i) {
   case 1 :
     //Do first stuff
     break;
   case 2 :
     //Do second stuff
     //Fall Through
   case 3 :
     //Do third stuff 
     break;
}

基本上

  • 如果 i 为 1,应用程序将做第一件事。
  • 如果 i 为 2,它将执行第二和第三个操作。
  • 如果 i 为 3,它只会做第三件事。

由于在 VB .Net 中每个 Select case 语句的末尾都有一个自动中断,有人知道如何在 VB .Net 中实现这一点吗?

我的意思是很好很漂亮的方式......

【问题讨论】:

  • 不是重复的,因为它没有回答问题...
  • 其实在c#中是做不到的。为了使失败生效,案件之间不能有任何陈述。此外,可能的重复项准确地回答了您的问题。
  • C# 不允许非空情况下的“失败”。
  • C# 允许在非空的情况下失败!?

标签: c vb.net switch-statement select-case


【解决方案1】:

你的前提是错误的。在 C# 中,如果当前案例有语句,则不能进入下一个案例。尝试这样做会导致编译错误。

但是,您可以 (ab) 使用 goto case 来完成这项工作。

switch(0)
{
    case 0:
        Console.WriteLine("0");
        goto case 1;
    case 1:
        Console.WriteLine("1");
        break;

}

VB.Net 有no equivalent of goto case

【讨论】:

  • 我认为 OP 提到了 c,而不是 c#,虽然帖子已经更新了很多,所以也许最初提到了 c#?
  • @Igor 是的,原来是 C#。
  • 是的,但这是同一个概念...我想知道在 VB .Net 中是否有等效的概念...
  • 顺便说一下 - 值得注意的是,C# 中的 goto case 可以跳转到任何情况(也可以向上),并且 没有安全措施,如 this infinite switch fallback loop所示>
  • goto 滥用 anwser 是一个很好的 anwser 的那一天,地狱冻结了。
猜你喜欢
  • 2012-11-05
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
相关资源
最近更新 更多