为什么.NET枚举允许在最后一个字段中使用逗号? 这有什么特别的意义吗?
[FlagsAttribute]
public enum DependencyPropertyOptions : byte
{
Default = 1,
ReadOnly = 2,
Optional = 4,
DelegateProperty = 32,
Metadata = 8,
NonSerialized = 16,
}
它没有特殊意义,只是编译器的工作方式,主要是出于这个原因:
[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#允许在数组初始化器的末尾使用尾随逗号。此语法提供了从此类列表中添加或删除成员的灵活性,并简化了此类列表的计算机生成。
另外(对于Nick Craver的帖子)更容易添加新的枚举。
此行为不适用于枚举。考虑以下:
var list = new int[] { 1, 2, 3, };
另一个原因:它使编码gen变得更容易。
我知道这是一个古老的话题,但另一种对此问题有意义的方法是代码版本控制系统。
请考虑以下示例:
//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",
};
无论如何,根据情况,这两种方法都可能被认为是不正确或正确的。我特别喜欢在处理代码版本控制系统时更有意义的第二种方法。
无论如何希望这有帮助。