푸터 콘텐츠로 바로가기
Iron Academy Logo
C# 배우기
C# 배우기

다른 카테고리

C# 세트 플래그 열거형 이해하기: 플래그 지정

Tim Corey
9분 57초

C#에서 권한, 구성 또는 설정을 다룰 때 여러 값을 하나의 변수에 저장해야 하는 상황이 종종 발생합니다. 각 설정마다 별도의 부울 값을 사용하는 대신 플래그 열거형을 사용할 수 있습니다. 이 방법은 이진 연산을 활용하여 단일 정수 값 내에서 여러 옵션을 효율적으로 관리합니다.

이 글에서는 Tim Corey의 동영상 " C#의 바이너리: 10분 안에 플래그 할당하기" 를 바탕으로 C#에서 플래그 열거형을 설정하는 방법을 자세히 살펴보겠습니다. Tim은 이진 연산을 사용하여 여러 값을 할당하는 방법을 설명하며, 이를 통해 코드를 더욱 효율적이고 읽기 쉽게 만들 수 있다고 말합니다. 자, 시작해 볼까요?

플래그 열거형 소개

Tim은 이 강의가 C#에서 이진법을 이해하기 위한 시리즈의 일부라고 설명하며 강의를 시작합니다. 이 영상에서 그는 이진 연산을 사용하여 플래그를 할당하는 방법에 집중합니다. 플래그를 사용하면 여러 값을 하나의 정수에 저장할 수 있으므로 권한 관리가 훨씬 간단하고 효율적입니다.

비트 OR 연산을 사용하여 여러 플래그 할당하기

Tim은 비트 OR 연산자를 사용하여 여러 권한을 결합하는 방법을 보여줍니다.|) 연산자. 그는 SQL, Redis, BuildSystem과 같은 다양한 권한 수준을 포함하는SystemPermissions` 열거형을 만듭니다. 여러 변수를 사용하는 대신 모든 권한을 하나의 값에 저장할 수 있습니다.

변수에 여러 권한을 할당하는 예:

// Assume that SystemPermissions is an enum with values SQL, Redis, and BuildSystem
SystemPermissions TimPermissions = SystemPermissions.SQL | SystemPermissions.Redis;

// Print the current permissions - it will include both SQL and Redis
Console.WriteLine(TimPermissions);
// Assume that SystemPermissions is an enum with values SQL, Redis, and BuildSystem
SystemPermissions TimPermissions = SystemPermissions.SQL | SystemPermissions.Redis;

// Print the current permissions - it will include both SQL and Redis
Console.WriteLine(TimPermissions);

이진 표현 표시

무슨 일이 일어나고 있는지 더 잘 이해하기 위해, Tim은 Convert.ToString(value, 2)를 사용하여 정수 값을 이진 형식으로 변환할 것을 제안합니다. 이를 통해 어떤 비트가 설정되어 있는지 시각화할 수 있습니다.

// Convert the permissions to a binary string to see the set bits
Console.WriteLine(Convert.ToString((int)TimPermissions, 2));
// Convert the permissions to a binary string to see the set bits
Console.WriteLine(Convert.ToString((int)TimPermissions, 2));

이는 서로 다른 비트 위치가 서로 다른 권한에 해당함을 보여주며, 하나의 정수에 여러 설정을 저장할 수 있는 방법을 보여줍니다.

OR 연산자를 사용하여 권한 추가하기

Tim은 를 사용하면 권한을 동적으로 추가할 수 있다고 설명합니다.|= 연산자:

// Add the BuildSystem permission to the existing permissions
TimPermissions |= SystemPermissions.BuildSystem;

// Print the updated permissions - it now includes SQL, Redis, and BuildSystem
Console.WriteLine(TimPermissions);
// Add the BuildSystem permission to the existing permissions
TimPermissions |= SystemPermissions.BuildSystem;

// Print the updated permissions - it now includes SQL, Redis, and BuildSystem
Console.WriteLine(TimPermissions);

32비트 한계 이해하기

Tim은 중요한 고려 사항을 강조합니다. C#의 정수 데이터 형식은 32비트로 제한됩니다. 이는 우리가 int에 최대 32개의 고유한 플래그만 저장할 수 있음을 의미합니다. 32개 이상의 플래그가 필요하다면, long(64비트) 또는 여러 값을 사용하는 것을 고려해야 합니다. 하지만 대부분의 경우 깃발 32개면 충분합니다.

플래그를 데이터베이스에 저장하기

플래그 열거형을 사용하는 가장 큰 장점 중 하나는 데이터베이스에 효율적으로 저장할 수 있다는 것입니다. 여러 개의 부울 열을 저장하는 대신 모든 권한을 나타내는 단일 정수 값을 저장할 수 있습니다. 팀은 이러한 접근 방식이 데이터베이스의 복잡성과 저장 공간 요구 사항을 크게 줄여준다고 설명합니다.

예를 들어, TimPermissions가 37로 저장되어 있다면, 이는 다음의 조합을 나타냅니다:

  • SQL (비트 1)
  • 레디스(비트 3)
  • 빌드 시스템(비트 5)

데이터베이스에서 이 값을 가져오면 쉽게 디코딩하여 현재 활성화된 권한을 확인할 수 있습니다.

결론

팀은 플래그 열거형의 강력한 기능을 강조하며 마무리합니다. 이진 연산을 사용하면 단일 정수 내에서 여러 상태를 효율적으로 관리할 수 있습니다. 이 기술은 성능을 향상시키고, 데이터 저장을 간소화하며, 코드의 가독성을 높여줍니다.

이러한 접근 방식을 따르면 C# 플래그 열거형을 사용하여 깔끔하고 확장 가능한 권한 관리 시스템을 구현할 수 있습니다. 더 잘 이해하려면 전체 영상을 시청하세요.

Hero Worlddot related to C# 세트 플래그 열거형 이해하기: 플래그 지정
Hero Affiliate related to C# 세트 플래그 열거형 이해하기: 플래그 지정

사랑하는 것을 공유하여 더 많은 수익을 얻으세요

당신은 .NET, C#, Java, Python, 또는 Node.js를 다루는 개발자를 위한 콘텐츠를 만드나요? 당신의 전문성을 추가 수입으로 전환하세요!

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해