【发布时间】:2014-01-29 15:39:09
【问题描述】:
在 C# 中,定义枚举似乎可以在末尾带或不带分号:
public enum DaysOfWeek
{ Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday} ; //Optional Semicolon?
此C# page from MSDN 显示以分号结尾的枚举,CarOptions 除外。
我还没有找到任何明确的参考,而且这两种方法似乎都可以在没有编译器警告的情况下工作。
那么最后是否应该有分号?
【问题讨论】:
-
(我猜@EricLippert 会很适合回答)
-
“应该”按照什么标准?在我看来,这是一个完全任意的风格问题,就像“类型定义开头的大括号应该出现在第一行的末尾还是下一行?”或“应该一个-line if 语句使用大括号(
if (b) x(); else y();vsif (b) { x(); } else { y(); })?" -
虽然我个人不喜欢类型声明后的分号(在
class、interface、enum或struct的最后一个}之后),但我更喜欢在后面多加一个逗号枚举中的最后一个成员。也就是说,我更愿意以... Sunday, }结尾。所以我个人的偏好是:跳过可选的分号,包括所有可选的逗号。 -
@abelenky:直到事实发生四年后,我才看到您的评论。这里讨论了 C 和 C++ 需要 semi 的原因:stackoverflow.com/questions/785686/…。这些原因都不适用于 C#。分号在 C# 中的类或枚举的末尾是可选的,这是对习惯将半分号放在类型末尾的 C++ 开发人员的礼貌。除非我在测试解析器的规范合规性,否则我从来没有在 C# 类型的末尾放置过半。无论哪种方式,我都不会担心。