Enum Flags được sử dụng để lấy một biến liệt kê và cho phép nó chứa nhiều giá trị. Nó nên được sử dụng bất cứ khi nào enum đại diện cho một tập hợp các cờ, thay vì đại diện cho một giá trị duy nhất
Chỉ sử dụng FlagsAttribute cho một kiểu liệt kê nếu một phép toán bit (AND, OR, EXCLUSIVE OR) được thực hiện trên một giá trị số.
Định nghĩa hằng số liệt kê theo lũy thừa của hai, nghĩa là, 1, 2, 4, 8, v.v. Điều này có nghĩa là các cờ riêng lẻ trong các hằng số liệt kê kết hợp không chồng chéo lên nhau.
Ví dụ
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(); } }
Đầu ra
SocialMedia 1 has Facebook service: Yes