■ Enum 클래스를 사용해 플래그 조합에서 플래그 설정 여부을 구하는 방법을 보여준다.
▶ PetType.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
namespace TestProject { /// <summary> /// 애완동물 타입 /// </summary> [Flags] public enum PetType { /// <summary> /// 없음 /// </summary> None = 0, /// <summary> /// 개 /// </summary> Dog = 1, /// <summary> /// 고양이 /// </summary> Cat = 2, /// <summary> /// 새 /// </summary> Bird = 4, /// <summary> /// 토끼 /// </summary> Rabbit = 8, /// <summary> /// 기타 /// </summary> Other = 16 } } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 플래그 설정 여부 구하기 - IsFlagSet(sourceType, flagType) /// <summary> /// 플래그 설정 여부 구하기 /// </summary> /// <param name="sourceType">소스 타입</param> /// <param name="flagType">플래그 타입</param> /// <returns>플래그 설정 여부</returns> private static bool IsFlagSet(PetType sourceType, PetType flagType) { return (sourceType & flagType) == flagType; } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { PetType[] petTypeArray = { PetType.None, PetType.Dog | PetType.Cat, PetType.Dog }; int noneCount = 0; int dogCount = 0; foreach(PetType petType in petTypeArray) { if(petType.Equals(PetType.None)) { noneCount++; } else if(IsFlagSet(petType, PetType.Dog)) { dogCount++; } } Console.WriteLine("애완동물이 없는 경우 : {0}/{1}", noneCount, petTypeArray.Length); Console.WriteLine("개가 있는 경우 : {0}/{1}", dogCount , petTypeArray.Length); } #endregion } |