.NET枚举允许在最后一个字段中使用逗号
为什么这个.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#规范(页363 /第19.7节)
像标准C ++一样,C#允许在数组初始化器结尾处使用尾随逗号。 该语法提供了从这样的列表添加或删除成员的灵活性,并且简化了机器生成这样的列表。
另外(尼克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", };
无论如何,根据情况,这两种方法都可能被认为是错误的或正确的。 我特别喜欢第二种方法,在处理代码版本控制系统时更有意义。
无论如何,希望这有助于。