[System.Flags]는 C#(.NET 프레임워크의 일부)에서 열거형(enum)을 플래그(flag)의 모음으로 처리해야 함을 나타내는 속성입니다. 이를 통해 비트 연산을 사용하여 enum 값을 결합할 수 있으며, 이는 코드에서 옵션 또는 상태 조합을 효율적으로 나타내는 데 도움이 됩니다.

[System.Flags]의 주요 사용 사례는 다양한 방식으로 결합될 수 있는 독립적인 옵션 또는 속성 집합이 있을 때입니다. 플래그 속성을 사용하면 단일 정수 값으로 이러한 옵션의 모든 조합을 나타낼 수 있습니다.

다음은 이 개념을 설명하는 예입니다:

[System.Flags]를 사용하지 않는 경우:

public enum Colors { Red, Green, Blue }

이 경우 변수에 한 번에 하나의 색상만 할당할 수 있습니다.

[System.Flags]를 사용하는 경우:

[System.Flags] public enum Colors { None = 0, Red = 1, Green = 2, Blue = 4 }

이제 비트 OR 연산을 사용하여 색상을 결합할 수 있습니다:

Colors combinedColors = Colors.Red | Colors.Green;

combinedColors는 이제 Red와 Green 플래그를 모두 가지게 됩니다. 비트 AND 연산을 사용하여 특정 플래그가 설정되어 있는지 확인할 수도 있습니다:

bool isRedSet = (combinedColors & Colors.Red) == Colors.Red;

이를 통해 단일 정수 값으로 여러 옵션, 상태 또는 속성을 효율적으로 저장하고 조작할 수 있습니다. 그러나 플래그를 결합할 때 비트가 겹치지 않도록 열거 값으로 2의 거듭제곱(2^n)을 할당하는 것이 중요합니다.

블로그 이미지

RIsN

,

코드

  • enum 데이터
private enum CharacterVoice
{
    LJ8 = 15,
    POKI = 16,
    CHARASI = 65
}
  • 실행 코드
// :: enum 안의 모든 데이터를 가져옴
var values = System.Enum.GetValues(typeof(CharacterVoice));
// :: 데이터의 길이 만큼 랜덤 획득
int random = Random.Range(0, values.Length);
// :: 해당 enum의 수치값을 획득
Debug.Log((int)values.GetValue(random));

// >> 결과: 15 or 16 or 65

 

블로그 이미지

RIsN

,