Отсутствует последний элемент в перечислениях - PullRequest
3 голосов
/ 11 января 2010

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

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

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

Ответы [ 3 ]

8 голосов
/ 11 января 2010

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

Наличие запятой или нет - ничего не меняет.

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

перечисление декларирование:
& # X2003; & # x2003; атрибуты неавтоматического & # x2003; перечислений-модификаторы неавтоматического * +1023 * & # x2003; enum & # x2003; * 1 025 * идентификатор * * & тысяча двадцать шесть # x2003; * * перечисление тысячи двадцать семь-база * ** 1029 тысяча двадцать-восемь * неавтоматическая * ** тысячи тридцать-дв одна тысячи тридцать один * & # x2003; перечисление тела & # x2003; ; неавтоматического

перечислимый база:
& # x2003; & # x2003; : целочисленного типа

перечисление тела:
& # x2003; & # x2003; { декларации-членов-перечислений opt }
& # x2003; & # x2003; { enum-member-Объявления , }

перечисления-члены-декларация:
& # X2003; & # x2003; перечисление членов декларирование
& # x2003; & # x2003; объявления-члены-перечисления & # x2003; , & # x2003; объявление-члена-перечисления

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

Как видите, enum-body включает опцию одиночной конечной запятой.

1 голос
/ 11 января 2010

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

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

0 голосов
/ 11 января 2010

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

...