C# 在开关情况下,如果我们写;“违约”;与任何单词或单个字母一样,它不会抛出错误
在C# 在开关情况下,如果我们写;“违约”;与任何单词或单个字母一样,它不会抛出错误,c#,switch-statement,C#,Switch Statement,在开关中,如果我们写任何单词或单个字母而不是默认值,它不会抛出错误。 e、 g 它运行时不会抛出错误 有人能解释一下它是如何工作的吗?它是编译的,因为你好:是一个标签,因此可以作为转到的目的地。当我编译这篇文章时,我收到了关于未引用标签的警告(因为我没有goto) 下面是一个可以在LINQPad中使用的示例—您会注意到它同时打印“1”和“hello”: 它与开关语句无关。它是的标签标识符(由于实践不好,很少使用) 对于您的示例,您可以看到以下代码段: switch (10) { case
开关中
,如果我们写任何单词或单个字母而不是默认值
,它不会抛出错误。
e、 g
它运行时不会抛出错误
有人能解释一下它是如何工作的吗?它是编译的,因为
你好:
是一个标签,因此可以作为转到的目的地。当我编译这篇文章时,我收到了关于未引用标签的警告(因为我没有goto)
下面是一个可以在LINQPad中使用的示例—您会注意到它同时打印“1”和“hello”:
它与开关
语句无关。它是的标签标识符(由于实践不好,很少使用)
对于您的示例,您可以看到以下代码段:
switch (10)
{
case 1:
break;
hello:
Console.Write("In hello label");
break;
case 2:
goto hello;
break;
}
在上面,您正在switch语句中为goto语句定义一个标签。如果switch语句落在情况2
,则它将转到标签hello
。因为您的原始代码段没有转到hello代码>您将收到未引用标签的警告
您的标签hello
与switch语句没有任何关系(内部定义的除外) 让我想起一个老笑话/把戏:C风格的语言理解URL!您只需粘贴http://www.google.com/
在自己的线路上的任何位置=P
switch(1)
{
case 1:
"1".Dump();
goto hello;
break;
hello:
"hello".Dump();
break;
}
goto something2;
something1:
Console.WriteLine("world");
goto done;
something2:
Console.WriteLine("hello");
goto something1;
done:
switch (10)
{
case 1:
break;
hello:
Console.Write("In hello label");
break;
case 2:
goto hello;
break;
}