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