C# 열거형 고급 활용: 플래그와 연산

C# 열거형 고급 활용: 플래그와 연산


열거형의 기본 사용법을 넘어서, C#에서 제공하는 고급 기능들을 활용하여 코드의 유연성과 확장성을 높일 수 있습니다. 이번 글에서는 플래그 열거형, 연산, 문자열 변환, 그리고 확장 메서드에 대해 알아보겠습니다.

1. 플래그 열거형 (Flags): 비트 연산을 활용한 다중 값 할당

플래그 열거형은 각 멤버가 비트 위치를 기반으로 하는 값을 갖습니다. 이를 통해 여러 열거형 값을 조합하여 하나의 변수에 할당할 수 있습니다.

[Flags]  // 이 속성은 열거형이 비트 필드나 비트 집합으로 사용될 수 있음을 나타냅니다.
enum Permissions {
    None = 0,       // 아무 권한이 없는 기본 상태
    Read = 1,       // 읽기 권한
    Write = 2,      // 쓰기 권한
    Execute = 4     // 실행 권한
}

Permissions userPermissions = Permissions.Read | Permissions.Write;  // 읽기와 쓰기 권한을 동시에 가진 상태

2. 열거형 값 간의 연산

열거형 값은 내부적으로 정수 값으로 관리되기 때문에, 간단한 산술 연산이 가능합니다.

Days today = Days.Wednesday;  // 오늘은 수요일로 설정
Days tomorrow = today + 1;    // 내일은 오늘보다 1증가된 요일, 즉 목요일로 설정

3. 문자열과 열거형 간의 변환

C#에서는 Enum 클래스의 메서드를 사용하여 열거형과 문자열 간의 변환을 쉽게 수행할 수 있습니다.

Days day = Days.Friday;                        // 'day' 변수를 'Friday'로 설정
string dayString = day.ToString();             // 열거형 'day'를 문자열로 변환
Days parsedDay = (Days)Enum.Parse(typeof(Days), dayString);  // 문자열 'dayString'을 다시 열거형 'Days'로 변환

4. 열거형과 확장 메서드 활용

확장 메서드를 사용하여 열거형에 추가적인 메서드나 속성을 추가할 수 있습니다. 이를 통해 코드의 가독성과 유용성을 향상시킬 수 있습니다.

// 확장 메서드를 포함하는 'DaysExtensions' 정적 클래스
public static class DaysExtensions {
    // 'Days' 열거형에 대한 확장 메서드. 주말 여부를 판단합니다.
    public static bool IsWeekend(this Days day) {
        return day == Days.Saturday || day == Days.Sunday;
    }
}

// 'Days.Saturday'가 주말인지 확인하는 코드
bool isWeekend = Days.Saturday.IsWeekend();

결론

이렇게 C#의 열거형 고급 기능들은 코드의 확장성과 가독성을 크게 향상시켜줍니다. 적절히 활용하여 효율적인 프로그래밍을 해보세요.

참고자료

함께 보면 좋은 이전 게시글

위로 스크롤