Enum Flags ใช้สำหรับรับตัวแปรการแจงนับและอนุญาตให้เก็บค่าได้หลายค่า ควรใช้เมื่อใดก็ตามที่ enum แสดงถึงคอลเล็กชันของแฟล็ก แทนที่จะแสดงค่าเดียว
ใช้ FlagsAttribute สำหรับการแจงนับเฉพาะในกรณีที่การดำเนินการระดับบิต (AND, OR, EXCLUSIVE OR) ถูกดำเนินการกับค่าตัวเลข
กำหนดค่าคงที่การแจงนับในยกกำลังสอง นั่นคือ 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