gpt4 book ai didi

c# - 允许在 switch 语句中使用任意标签的原因是什么?

转载 作者:太空狗 更新时间:2023-10-29 22:26:16 25 4
gpt4 key购买 nike

编译以下代码:

int a = 0;

switch (a)
{
case 1:
return;
defau1t: // note the typo
return;
}

因为 defau1t 被解释为 goto标签。

但是在下面的情况下:

switch (a)
{
defau1t:
return;
}

编译器正确识别错误:

error CS1525: Unexpected symbol defau1t', expecting}', case', ordefault:'

这是为什么呢?如果导致(看似)不连贯的行为,允许在 switch 语句中使用任意标签的原因是什么?

旁注:对于 C++ 和 Java 的类似片段可以观察到同样的问题。

最佳答案

我认为您的看法是错误的。并不是为了允许它而做出了特殊的异常(exception),而是没有为了禁止它而做出了特殊的异常(exception)。

switch block 必须以 casedefault 标签开头,但除此之外,任何有效代码都可以成为街区的一部分。

包括其他标签。

不允许这样做会使语言更难理解,会使编译器更难编写,并且会有一些好处,但好处很小。

关于c# - 允许在 switch 语句中使用任意标签的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25874612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com