C# 中的 [Flags] 枚举属性是什么意思?

csharpserver side programmingprogramming更新于 2025/10/2 3:52:17

枚举标志用于获取枚举变量并允许其保存多个值。当枚举表示一组标志,而不是表示单个值时,应该使用它。

仅当对数值执行按位运算(AND、OR、EXCLUSIVE OR)时,才对枚举使用 Flags 属性。

枚举常量应以 2 的幂数定义,即 1、2、4、8 等等。这意味着组合枚举常量中的各个标志不会重叠。

示例

class Program {
   [Flags]
   enum SocialMediaFlags { None = 0, Facebook = 1, Twitter = 2, LinkedIn = 4, Instagram = 8, Snapchat = 16, Pinterest = 32, Reddit = 64 }
   static void Main() {
      var SocialMedia1 = SocialMediaFlags.Facebook | SocialMediaFlags.Twitter |
SocialMediaFlags.Instagram;
      var SocialMedia2 = SocialMediaFlags.LinkedIn;
      var SocialMedia3 = SocialMediaFlags.Pinterest | SocialMediaFlags.Reddit;
      SocialMediaFlags[] SocialMediasFlags = { SocialMedia1, SocialMedia2, SocialMedia3 };
      for (int ctr = 0; ctr < SocialMediasFlags.Length; ctr++)
      if ((SocialMediasFlags[ctr] & SocialMediaFlags.Facebook) == SocialMediaFlags.Facebook) {
         Console.WriteLine("SocialMedia {0} has Facebook service: {1}", ctr + 1, "Yes");
      }
      Console.WriteLine();
   }
}

输出

SocialMedia 1 has Facebook service: Yes

相关文章