Pra*_*tik 15 c# switch-statement
在a中switch,如果我们写任何单词或单个字母而不是default 它不会抛出错误.例如
switch(10)
{
case 1:
break;
hello:
break;
}
Run Code Online (Sandbox Code Playgroud)
它运行时没有抛出错误.
谁能解释一下这是如何工作的?
pst*_*jds 16
它正在编译,因为它是hello:一个标签,因此可以作为一个目的地goto.当我编译这个时,我收到了关于未引用标签的警告(因为我没有转到)
这是一个你可以在LINQPad中抛出的例子 - 你会注意到它打印"1"和"你好":
switch(1)
{
case 1:
"1".Dump();
goto hello;
break;
hello:
"hello".Dump();
break;
}
Run Code Online (Sandbox Code Playgroud)
McG*_*gle 13
这与switch声明无关.它是(由于不良做法而很少使用)goto语句的标签标识符.
goto something2;
something1:
Console.WriteLine("world");
goto done;
something2:
Console.WriteLine("hello");
goto something1;
done:
Run Code Online (Sandbox Code Playgroud)
对于您的示例,您可以看到以下代码段:
switch (10)
{
case 1:
break;
hello:
Console.Write("In hello label");
break;
case 2:
goto hello;
break;
}
Run Code Online (Sandbox Code Playgroud)
在上面,您将在switch语句中为goto语句定义标签.如果switch语句属于case 2,则它将转到标签hello.由于您的原始代码段没有,因此goto hello;您将收到未引用标签的警告.
您的标签hello 不必对switch语句执行任何操作(除了在内部定义).
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |