C#/개념공부

C# enum 열거형

푸코잇 2024. 1. 3. 21:52
728x90

enum 열거형이란?

C#에서 제공하는 enum은 열거형 상수(constant)를 표현할 때 사용한다.

상수 숫자를 의미 있는 단어로 표현할 수 있어 가독성이 좋아진다.

예를 들어 계절의 경우 봄, 여름, 가을, 겨울 4가지로 고정된다.

enum으로 표현하면 다음과 같다.

class Program
{
    public enum Season
    {
        Spring,
        Summer,
        Fall,
        Winter
    }

    static void Main(string[] args)
    {
        Season season = Season.Spring;
        Console.WriteLine(season);	// "Spring" 출력(내부적으로 season.ToString() 호출)
        Console.WriteLine((int)season);	// 0 출력
    }
}

 

Season 열거형 변수를 선언할 수 있으며 값은 Spring, Summer, Fall, Winter만 가질 수 있다.

enum은 기본적으로 int 형식이며, 0부터 시작하고 1씩 증가한다.

 

public enum Season
{
    Spring = 2,
    Summer,
    Fall = 100,
    Winter
}

 

명시적으로 상수 값을 지정할 수 있다.

Summer의 경우 Spring에서 1이 더해진 3을 가진다.

Winter의 경우 Fall에서 1이 더해진 101을 가진다.

 

비트 플래그

게임을 개발하다 보면 비트 플래그를 자주 사용하게 된다.

예를 들어 사용자로부터 방향키 입력을 받는 경우가 있다.

하나의 방향키만 누르는 경우도 있지만 두개 이상의 방향키를 같이 누르는 경우가 있다.

이때 비트 플래그를 사용하면 하나의 변수로 처리할 수 있다.

 

[Flags]
public enum KeyFlag
{
    None,
    Left = 1,
    Right = 2,
    Up = 4,
    Down = 8
}

static void Main(string[] args)
{
    KeyFlag keyFlag = KeyFlag.Right | KeyFlag.Up;
    Console.WriteLine(keyFlag);		// "Right, Up" 출력
    Console.WriteLine((int)keyFlag);	// 6 출력
    
    if((keyFlag & KeyFlag.Right) == KeyFlag.Right)
    {
        Console.WriteLine("Right");
    }

    if(keyFlag.HasFlag(KeyFlag.Up))
    {
        Console.WriteLine("Up");
    }
}

 

[Flags] Attribute를 통해 KeyFlag 변수에 OR(|) 연산자를 통해 다중값을 가질 수 있다.

또한, AND(&) 연산자 또는 HasFlag 메서드를 통해 특정 값을 가지고 있는지 체크할 수 있다.

'C# > 개념공부' 카테고리의 다른 글

C# Nullable 값 형식이란?  (0) 2024.01.07
C# var 키워드란?  (0) 2024.01.06
C# 상수(const)  (1) 2024.01.02
C# 변수  (0) 2023.12.21
C# 자료형 크기 및 범위  (0) 2023.12.19