【问题标题】:Enum syntax - extra comma allowed at end?枚举语法 - 末尾允许额外的逗号?
【发布时间】:2012-10-11 23:30:51
【问题描述】:

惊讶地发现 C# Enum 定义似乎允许在末尾添加一个额外的逗号(至少在 VS2010 中)。

例如:

public enum EnumTest1
{
    Abc,
    Def,
}

即“Def”的末尾有一个逗号。 只是想知道这是设计允许的,还是疏忽。 (这可能很高兴,因为如果它是一个错误,则可能无法保证像上面这样的代码将在未来的 C# 版本中编译)。

【问题讨论】:

  • 对不起,这是重复的:stackoverflow.com/questions/792753/…(也许不是?,那篇文章是针对 C 而不是 C#。)
  • 这没有什么问题,同样的行为存在于像 new obj {a = 1, b = 2,}这样的语法中
  • 这仍将在 Visual Studio 2012 中编译,目前已测试:D
  • 实际上,这是 stackoverflow.com/questions/2147333/…stackoverflow.com/questions/5126483/… 的一个副本。抱歉,我没有更彻底地搜索。
  • 我很惊讶它被允许排除它,至少应该有一个强制执行它的选项。 (至于为什么对该主题有多种解释)

标签: c#


【解决方案1】:

这是设计允许的。同样,您也可以在初始化程序中使用尾随逗号。例如:

var ints = new[] { 2, 3, 4, 3, };

var obj = new SomeClass { Prop1 = "foo", Prop2 = "bar", };

我认为允许尾随逗号使创建自动生成的代码变得更加容易,因为在代码中输出列表时不必添加最后一个列表逻辑。

【讨论】:

  • 这是一种从 C/C++ 中“借用”的语法,对于从枚举中插入/删除行非常方便,就像上面的那样。例如,如果您刚刚注释掉 Def,则列表仍然有效,而无需处理逗号。如果你想添加一个新的枚举,你可以添加它,而如果没有尾随逗号支持,你也必须编辑上面的行,否则它不会编译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-24
相关资源
最近更新 更多