열거형 플래그는 열거형 변수를 사용하여 여러 값을 보유할 수 있도록 합니다. 열거형이 단일 값을 나타내지 않고 플래그 컬렉션을 나타낼 때마다 사용해야 합니다.
숫자 값에 대해 비트 연산(AND, OR, EXCLUSIVE OR)을 수행해야 하는 경우에만 열거형에 FlagsAttribute를 사용하십시오.
열거 상수를 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