在查看一些遗留代码时,我遇到了这个枚举:
public enum cmdResults
{
cmdNotFound = 0,
cmdFound = 1,
cmdExit = 2,
cmdSuccess = 3,
cmdFail = 4,
cmdTimeout = 5,
cmdProcess = 6,
cmdAddTime = 7,
};
在注意到最终枚举成员之后的逗号时,我惊呆了;我删除了它,并且正如预期的那样,它仍然被编译。但为什么用表示最后一个逗号?
(并没有提到成员的奇怪排序;我会在索引0处放置一个新的“cmdNothing”,或者至少让“cmdFail”取得那个位置)
答案 0 :(得分:11)
因为C#编译器编写者选择在末尾创建一个有效语法的可选逗号。
我非常喜欢这个,因为这意味着你不需要特殊情况的最后一行。您可以复制粘贴线条,在任何位置添加新线条(包括末尾)而不考虑它的位置,删除线条而无需修复逗号等。通过允许多余的逗号不会引入歧义或其他问题。
答案 1 :(得分:3)
它编译因为它是合法的语法。