.NET Enumeration позволяет запятую в последнем поле
Почему это перечисление .NET разрешено иметь запятую в последнем поле?
Имеет ли это какое-то особое значение?
[FlagsAttribute]
public enum DependencyPropertyOptions : byte
{
Default = 1,
ReadOnly = 2,
Optional = 4,
DelegateProperty = 32,
Metadata = 8,
NonSerialized = 16,
}
Ответы
Ответ 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",
};
Как бы то ни было, оба подхода могут считаться неправильными или правильными в зависимости от ситуации. Я особенно предпочитаю второй подход, который имеет больший смысл при работе с системами управления версиями кода.
В любом случае надеюсь, что это поможет.