【发布时间】:2010-01-25 17:29:58
【问题描述】:
我了解 Enums 在 C# 中是如何工作的,并且我了解了 Flags 属性带来的好处。
我看到了这个问题,here。推荐第一种口味,但没有提供任何理由/理由。
这两者的定义方式有什么不同,一个比另一个更好吗?使用第一个语法而不是第二个语法有什么好处?我在定义Flags类型Enums时总是使用第二种风格......我一直都做错了吗?
[Serializable]
[Flags]
public enum SiteRoles
{
User = 1 << 0,
Admin = 1 << 1,
Helpdesk = 1 << 2
}
这和
不一样[Serializable]
[Flags]
public enum SiteRoles
{
User = 1,
Admin = 2,
Helpdesk = 4
}
【问题讨论】:
-
这两个代码片段生成的IL代码是一样的。
-
在这段代码中发现错误:BackupOperator = 1073714824。您可以通过说 BackupOperator = 1 来避免错误
-
感谢所有信息,我将使用第一种方法,因为除了最简单的情况外,它似乎更适合所有情况。