Подтвердить что ты не робот

.NET Enumeration позволяет запятую в последнем поле

Почему это перечисление .NET разрешено иметь запятую в последнем поле?
Имеет ли это какое-то особое значение?

[FlagsAttribute]
public enum DependencyPropertyOptions : byte
{
           Default = 1,
           ReadOnly = 2,
           Optional = 4,
           DelegateProperty = 32,
           Metadata = 8,
           NonSerialized = 16,
}
4b9b3361

Ответ 1

Он не имеет особого значения, как работает компилятор, главным образом по этой причине:

[FlagsAttribute]
public enum DependencyPropertyOptions : byte
{
           Default = 1,
           ReadOnly = 2,
           Optional = 4,
           DelegateProperty = 32,
           Metadata = 8,
           NonSerialized = 16,
           //EnumPropertyIWantToCommentOutEasily = 32
}

По запросу комментариев: эта информация поступает прямо из Спецификация С# (Страница 355/Раздел 17.7)

Подобно стандарту С++, С# допускает конечную запятую в конце инициализатора массива. Этот синтаксис обеспечивает гибкость при добавлении или удалении членов из такого списка и упрощает создание таких списков.

Ответ 2

Также (к сообщению Nick Craver) гораздо проще добавить новые перечисления.

Это поведение подходит не только для перечислений. Рассмотрим следующее:

var list = new int[] { 1, 2, 3, };

Ответ 3

Еще одна причина: упрощает кодирование gen.

Ответ 4

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

Рассмотрим следующий пример:

//version 1
var myArray = {
    "item 1",
    "item 2"
};
//version 2
var myArray = {
    "item 1",
    "item 2", //will be considered a change, it may be considered an erroneous approach
    "item 3"
}

Теперь рассмотрим этот подход:

//version 1
var myArray = {
    "item 1",
    "item 2",
};
//version 2
var myArray = {
    "item 1",
    "item 2", //will not be considered a change, it may be considered an erroneous approach too, but, means that the code wasn't changed intrinsically
    "item 3",
};

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

В любом случае надеюсь, что это поможет.