.NET Enumeration允许在最后一个字段中使用逗号

问题描述 投票:41回答:4

为什么.NET枚举允许在最后一个字段中使用逗号? 这有什么特别的意义吗?

[FlagsAttribute]
public enum DependencyPropertyOptions : byte
{
           Default = 1,
           ReadOnly = 2,
           Optional = 4,
           DelegateProperty = 32,
           Metadata = 8,
           NonSerialized = 16,
}
c# .net enums
4个回答
61
投票

它没有特殊意义,只是编译器的工作方式,主要是出于这个原因:

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

通过评论请求:此信息直接来自C# Specification (Page 355/Section 17.7)

与标准C ++一样,C#允许在数组初始化器的末尾使用尾随逗号。此语法提供了从此类列表中添加或删除成员的灵活性,并简化了此类列表的计算机生成。


12
投票

另外(对于Nick Craver的帖子)更容易添加新的枚举。

此行为不适用于枚举。考虑以下:

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

10
投票

另一个原因:它使编码gen变得更容易。


1
投票

我知道这是一个古老的话题,但另一种对此问题有意义的方法是代码版本控制系统。

请考虑以下示例:

//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",
};

无论如何,根据情况,这两种方法都可能被认为是不正确或正确的。我特别喜欢在处理代码版本控制系统时更有意义的第二种方法。

无论如何希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.