[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

,

POLYGON Kids - Low Poly 3D Art by Synty
SM_Chr_Kid_Adventure_01
SM_Chr_Kid_Alien_01
SM_Chr_Kid_Alien_02
SM_Chr_Kid_Android_01
SM_Chr_Kid_Ballerina_01
SM_Chr_Kid_Cardboard_Robot_01
SM_Chr_Kid_CargoShorts_01
SM_Chr_Kid_Casual_04
SM_Chr_Kid_Cheerleader_01
SM_Chr_Kid_Cowboy_01
SM_Chr_Kid_Cowboy_02
SM_Chr_Kid_Demon_01
SM_Chr_Kid_Doctor_01
SM_Chr_Kid_Dress_01
SM_Chr_Kid_Eastern_01
SM_Chr_Kid_Eastern_Skirt_01
SM_Chr_Kid_Elf_Warrior_01
SM_Chr_Kid_Exercise_01
SM_Chr_Kid_Exercise_02
SM_Chr_Kid_Explorer_01
SM_Chr_Kid_Farmer_01
SM_Chr_Kid_Fat_01
SM_Chr_Kid_Fat_02
SM_Chr_Kid_Footballer_01
SM_Chr_Kid_Geisha_01
SM_Chr_Kid_Ghost_01
SM_Chr_Kid_Goblin_01
SM_Chr_Kid_Goblin_02
SM_Chr_Kid_HolidayElf_01
SM_Chr_Kid_Hoodie_01
SM_Chr_Kid_Hoodie_02
SM_Chr_Kid_Hoodie_03
SM_Chr_Kid_JungleKid_01
SM_Chr_Kid_Karate_01
SM_Chr_Kid_Knight_01
SM_Chr_Kid_Magician_01
SM_Chr_Kid_Maid_01
SM_Chr_Kid_Mummy_01
SM_Chr_Kid_Nerd_01
SM_Chr_Kid_Ninja_01
SM_Chr_Kid_Onesie_Bunny_01
SM_Chr_Kid_Onesie_Cat_01
SM_Chr_Kid_Onesie_Dino_01
SM_Chr_Kid_Onesie_Tiger_01
SM_Chr_Kid_Overalls_01
SM_Chr_Kid_Overalls_02
SM_Chr_Kid_Overalls_Dress_01
SM_Chr_Kid_Pajamas_01
SM_Chr_Kid_Peasant_01
SM_Chr_Kid_Pig_01
SM_Chr_Kid_Pilot_01
SM_Chr_Kid_Pirate_01
SM_Chr_Kid_Pirate_02
SM_Chr_Kid_PlaidShirt_01
SM_Chr_Kid_PoliceOfficer_01
SM_Chr_Kid_Prince_01
SM_Chr_Kid_Princess_01
SM_Chr_Kid_PufferVest_01
SM_Chr_Kid_Punk_01
SM_Chr_Kid_Raincoat_01
SM_Chr_Kid_Raincoat_02
SM_Chr_Kid_Robber_01
SM_Chr_Kid_Robot_01
SM_Chr_Kid_Samurai_01
SM_Chr_Kid_Schoolboy_01
SM_Chr_Kid_Schoolboy_02
SM_Chr_Kid_Schoolgirl_01
SM_Chr_Kid_Schoolgirl_02
SM_Chr_Kid_Scifi_Casual_01
SM_Chr_Kid_Scifi_Spacesuit_01
SM_Chr_Kid_Scout_Shorts_01
SM_Chr_Kid_Scout_Skirt_01
SM_Chr_Kid_ShirtDress_01
SM_Chr_Kid_Skater_01
SM_Chr_Kid_Skeleton_01
SM_Chr_Kid_SnowJacket_01
SM_Chr_Kid_Spacesuit_01
SM_Chr_Kid_Summer_01
SM_Chr_Kid_Superhero_01
SM_Chr_Kid_Superhero_02
SM_Chr_Kid_Survivor_01
SM_Chr_Kid_Survivor_Armoured_01
SM_Chr_Kid_Survivor_Vest_01
SM_Chr_Kid_Sweater_01
SM_Chr_Kid_Sweater_02
SM_Chr_Kid_Sweater_Dress_01
SM_Chr_Kid_Swimwear_01
SM_Chr_Kid_Swimwear_02
SM_Chr_Kid_Tracksuit_01
SM_Chr_Kid_Troll_01
SM_Chr_Kid_Trucker_01
SM_Chr_Kid_Viking_01
SM_Chr_Kid_Viking_02
SM_Chr_Kid_Werewolf_01
SM_Chr_Kid_Wetsuit_01
SM_Chr_Kid_WinterCoat_01
SM_Chr_Kid_Witch_01
SM_Chr_Kid_Wizard_01
SM_Chr_Kid_Zombie_01
SM_Chr_Kid_Zombie_02

블로그 이미지

RIsN

,