c# - 使用 [Flags] 属性定义 C# 枚举的多种方法?

标签 c# .net enums flags

我了解枚举在 C# 中的工作方式,并且了解 Flags 属性为表带来的影响。

我看到了这个问题,here .其中推荐第一种口味,但没有提供任何理由/理由。

这两者的定义方式有区别吗,一个比另一个好?使用第一个 synax 而不是第二个有什么好处?在定义 Flags 类型枚举时,我总是使用第二种风格……我一直都做错了吗?

[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
}

最佳答案

第一个的主要优点是您不需要为每个标志计算正确的值,因为编译器会为您完成。除此之外,它们是相同的。

关于c# - 使用 [Flags] 属性定义 C# 枚举的多种方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134204/

相关文章:

.net - 为什么最好不要使用 finalize 进行清理? 。网

java - 枚举的 values() 方法访问级别

c++ - 读取存储在多重映射中的私有(private)枚举作为值

java - 从 Android Spinner 中获取枚举值

c# - 将 SQL 转换为 LINQ

c# - n叉树中的搜索算法

c# - 在 C# 应用程序中创建数据库

C# : Specifying a location for Dll reference

c# - 为什么将委托(delegate)声明为静态会导致编译器错误 "The modifier ' static' is not valid for this item”?

c# - {0} 和 + 有什么区别?