簡體   English   中英

開關案例陳述中的分號

[英]semicolon in fall through of switch case statement

在附帶聲明中添加分號是否有任何意義? 我看到掉線效果符合預期,並且猜測分號被解釋為空語句。 但是使用分號是否有利弊? 有推薦的某種最佳做法嗎? 在下面的JavaScript示例中,請參閱第一個case語句中的分號。

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

我也想了解與上述C,C ++和Java有關的最佳實踐。 我還看到一些文檔,如果掉線事件中的case語句包含一條語句,C#會引發編譯錯誤。 像上面的空語句會在C#中觸發錯誤嗎?

不,沒有任何區別。

我建議您不要使用它,因為我認為它會使代碼不太清晰。

在C#中,這是一個錯誤。 D不允許; 同樣作為空語句,也必須使用{}

; 在C,C ++和Java中對您沒有任何幫助。 如果您不需要它,請不要使用它。 但是,如果要實現Duff的Device或變體,請不要讓將來的代碼閱讀者大吃一驚,而要讓他們“掉線”或“不間斷”注釋。

在C#中

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

通過中斷C#允許的少量跌落來防止情況2和3執行相同的代碼。

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

在案例2和案例3執行相同代碼時將是有效的。

最佳實踐

通常是不使用空語句。

像上面的空語句會在C#中觸發錯誤嗎?

是。

語法上是一樣的

它一定會使人困惑,所以我建議不要使用它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM