3

在查看一些遗留代码时,我遇到了这个枚举:

    public enum cmdResults 
    {
        cmdNotFound = 0,    
        cmdFound    = 1,    
        cmdExit     = 2,    
        cmdSuccess  = 3,    
        cmdFail     = 4,    
        cmdTimeout  = 5,    
        cmdProcess  = 6,
        cmdAddTime  = 7,
    };

在注意到最后一个枚举成员后面的逗号时,我惊呆了;我删除了它,并且正如预期的那样,它仍然编译。但为什么它最后的逗号一起工作?

(这并没有提到对我来说奇怪的成员排序;我要么在索引 0 处放置一个新的“cmdNothing”,要么至少让“cmdFail”占据那个位置)

4

2 回答 2

11

因为 C# 编译器编写者选择在末尾使可选逗号成为有效语法。

我非常喜欢这一点,因为这意味着您不需要对最后一行进行特殊处理。您可以复制粘贴行,在任何位置(包括末尾)添加新行而不考虑它的位置,删除行而不需要修复逗号等。允许多余的逗号不会引入歧义或其他问题。

于 2013-03-19T20:55:32.987 回答
3

它可以编译,因为它是合法的语法。

于 2013-03-19T20:55:29.840 回答