开关大小写语句中的分号

semicolon in fall through of switch case statement

本文关键字:大小写 语句 开关      更新时间:2023-09-26

在 case 语句中添加分号有什么意义吗?我看到跌倒按预期工作,并猜测分号被解释为空语句。但是使用分号有利/弊吗?是否有推荐的某种最佳实践?在下面的 javascript 示例中,请参阅第一个 case 语句中的分号。

    switch(a) {
        case 2:;
        case 3: alert('hello'); break;
        default: alert('default hello');
    }

我也有兴趣了解与上述 C、C++ 和 Java 相关的最佳实践。我还看到一些文档,如果失败的案例语句部分具有语句,则 C# 会引发编译错误。像上面这样的空语句会在 C# 中触发错误吗?

不,这没有任何区别。

我建议您不要使用它,因为在我看来,它使代码不太清晰。

在 C# 中,这是一个错误。D 也不允许;作为空语句,您必须使用 {} .

;在C,C++和Java中对你没有任何作用。如果您不需要它,请不要使用它。但是,如果您正在实现 Duff's Device 或变体,请给代码的未来读者一个骨头,并给他们留下"失败"或"不间断"的注释。

在 C# 中

switch(a) {
    case 2:;
    case 3: Console.WriteLine("hello"); break;
    default: Console.WriteLine("default hello");
}

防止情况 2 和 3 通过中断 C# 允许的一点点错误来执行相同的代码。

switch(a) {
    case 2:
    case 3: Console.WriteLine("hello"); break;
    default: Console.WriteLine("default hello"); break;
}

对于执行相同代码的情况 2 和 3 有效。

最佳实践

通常不使用空语句。

像上面这样的空语句会在 C# 中触发错误吗?

是的。

语法上是一样的

不过,这肯定会使某人感到困惑,所以我建议不要使用它