C#Flags vs FlagsAttribute

sch*_*ein 18 c# enums flags

使用Flags和FlagsAttribute与枚举有什么区别?

Mik*_*keP 27

Flags只是FlagsAttribute的简写.在C#中,当您将属性应用于元素时,可以将"属性"后缀保留在属性中.

至于Flags本身,它所做的只是将枚举表示为具有标志成员.您仍然必须确保成员具有正确组合的值.某些框架函数(如Enum.ToString)将查找flags属性以确定如何解释该值.

  • 我确保值"正确组合"的一种方法是从0开始为'none',然后每个枚举值增加一位向左移动.eg:`1 << 0`(1),`1 << 1 `(2),`1 << 2`(4)等 (4认同)