2016-07-07 1 views
0

Есть ли какое-либо значение для добавления точки с запятой в оператор case, который является частью провала? Я вижу, что провал работает как ожидалось и догадывается, что точка с запятой интерпретируется как пустой оператор. Но есть ли плюсы/минусы на наличие точки с запятой? Существует ли какая-то лучшая практика, которая рекомендуется? В приведенном ниже примере javascript см. Точку с запятой в первом случае.Точка с запятой при провале оператора case switch

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

Мне также интересно узнать о лучших практиках, связанных с вышеуказанным в C, C++ и Java. Я также видел некоторую документацию о том, что C# выдает ошибку компиляции, если часть case-отчета об ошибке имеет оператор. Будет ли пустой оператор, подобный приведенному выше, вызвать ошибку в C#?

+1

Я никогда не видел этого раньше. И не вижу смысла в этом. –

+3

Пятиязычный вопрос !, кроме странного кода 'C' или' C++' для использования таких широких символьных констант. – chux

+0

Вам не нужен полуподобный двоеточие в Java, он просто провалится через –

ответ

2

Нет, это не имеет никакого значения.

Я рекомендую вам не использовать его, поскольку он делает код менее понятным, на мой взгляд.

В C# это ошибка. D не разрешает ; как пустое заявление тоже, вы должны использовать {}.

-1

Синтаксически это же

Это связано с запутать кого-то, хотя так что я рекомендую использовать его

1

лучшие практики

обычно не использовать пустое заявление.

Будет ли пустой оператор, подобный приведенному выше, вызвать ошибку на C#?

Да.

1

; ничего не делает для вас на языках 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, выполняющих тот же код.

Смежные вопросы