Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

ความหมายของ [Flags] Enum Attribute ใน C#

[Flags] Attribute** บอก Compiler ว่า Enum นี้ใช้เป็น Bit Flags (Bitwise Operations) ได้

กติกา

  • Value ต้องเป็น Power of 2: 1, 2, 4, 8, 16, 32, 64... (Bit เดียวต่อ Value)
  • รวม Flags ด้วย Bitwise OR (|)
  • เช็ค Flag ด้วย Bitwise AND (&)

ตัวอย่าง

[Flags]
enum SocialMediaFlags
{
    None = 0,
    Facebook = 1,      // 0001
    Twitter = 2,       // 0010
    LinkedIn = 4,      // 0100
    Instagram = 8,     // 1000
    Snapchat = 16,
    Pinterest = 32,
    Reddit = 64
}

// Combine Flags
var social1 = SocialMediaFlags.Facebook | SocialMediaFlags.Twitter | SocialMediaFlags.Instagram; // 1|2|8 = 11
var social2 = SocialMediaFlags.LinkedIn; // 4
var social3 = SocialMediaFlags.Pinterest | SocialMediaFlags.Reddit; // 32|64 = 96

// Check Flag
if ((social1 & SocialMediaFlags.Facebook) == SocialMediaFlags.Facebook)
{
    Console.WriteLine("Has Facebook");
}

Output

SocialMedia 1 has Facebook service: Yes

ToString() กับ Flags

Console.WriteLine(social1); // "Facebook, Twitter, Instagram"
Console.WriteLine(social3); // "Pinterest, Reddit"

โดยไม่มี [Flags] จะแสดงค่า Number แทน (เช่น "11")