2010-01-11 2 views
3

Я искал варианты перечислений и просто заметил пропавшую запятую после последней опции. Возьмем, к примеру, что DayOfWeek перечисление (нажмите F12, чтобы перейти к определению):Отсутствует последний элемент в перечислениях

public enum DayOfWeek 
{ 
    Sunday = 0, 
    Monday = 1, 
    Tuesday = 2, 
    Wednesday = 3, 
    Thursday = 4, 
    Friday = 5, 
    Saturday = 6, // note this comma 
} 

Есть ли причина такого поведения?

+0

При использовании контроля версий diff к предыдущей версии выглядит более чистым, если добавлена ​​другая запись (в общем случае). Вы просто получите новую строку. Если запятая отсутствует, вы получаете удаленную строку и две добавленные строки (одна измененная строка, одна добавленная строка). – sstn

ответ

8

Задняя запятая после последнего enum участник не является обязательным. Это, по-видимому, было сделано, чтобы помочь автоматическому генерации кода, который может просто выплевывать вещи, не задумываясь о грамматике.

Является ли запятая присутствует или нет, ничего не меняет.

Взгляните на грамматике:

перечисление декларирование:
& # x2003; & # x2003; атрибутыopt & # x2003; enum-modifiersopt & # x2003; enum & # x2003; идентификатор & # x2003; enum-baseopt & # x2003; enum-body & # x2003; ;неавтоматического

перечисление-основа:
& # x2003; & # x2003; :интегрального типа

перечисление тела:
& # x2003; & # x2003; {перечисления-члены декларации неавтоматического}
& # x2003; & # x2003; {перечисления-члены декларации,}

перечислений-члены декларации:
& # x2003; & # x2003; enum-member-declaration
& # x2003; & # x2003; enum-member-declarations & # x2003; , & # x2003; перечисление членов декларация

перечисление членов-декларация:
& # x2003; & # x2003; атрибутыopt & # x2003; идентификатор
& # x2003; & # x2003; атрибутыopt & # x2003; идентификатор & # x2003; = & # x2003; постоянного выражения

Как видит, перечисление тела включает в себя возможность одним завершающей запятой.

+0

+1 - быстрее :) (15 символов) –

+0

Не так быстро с грамматикой. Форматирование - это боль :) – Joey

1

Я уверен, что ни один день недели не хватает .. :)

Вы можете иметь дополнительную запятую окончания определения перечислений (работает без а).Я думаю, это просто удобная вещь: если мир изменится, и вам нужно добавить день к неделе: добавьте новую строку (и, возможно, закончите ее запятой снова, для следующего парня, определяющего новые дни).

+0

+1, для меня смешно =) –

+0

Я не знаю, похоже, они пропустили BlarkDay в этом перечислении;) –

0

Компилятор просто игнорирует последнюю запятую. Он не должен быть там, но это также не ошибка, если вы положите его

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