산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 열거형(Enum) 완벽 가이드: 선언, 사용법, 모범 사례

열거형(Enumeration)은 명명된 정수 상수들의 집합입니다. enum 키워드로 선언합니다.

C# 열거형은 값 타입(Value Type)입니다. 자체 값을 가지며, 상속받거나 상속을 전달할 수 없습니다.

enum 변수 선언

enum <enum_이름> { 열거_리스트 };

열거 리스트의 각 심볼은 앞선 심볼보다 1 큰 정수 값을 가집니다. 기본적으로 첫 번째 심볼의 값은 0입니다.

기본 예제

enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

값: Sun=0, Mon=1, Tue=2, Wed=3, Thu=4, Fri=5, Sat=6

명시적 값 할당

enum Days { Sun = 1, Mon = 2, Tue = 3, Wed = 4, Thu = 5, Fri = 6, Sat = 7 }

열거형 사용 예제

using System;
namespace EnumApplication
{
    class EnumProgram
    {
        enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
        
        static void Main(string[] args)
        {
            int WeekdayStart = (int)Days.Mon;  // 캐스팅으로 정수 값 얻기
            int WeekdayEnd = (int)Days.Fri;
            
            Console.WriteLine("Monday: {0}", WeekdayStart);   // 1
            Console.WriteLine("Friday: {0}", WeekdayEnd);     // 5
            Console.ReadKey();
        }
    }
}

열거형의 기반 타입 지정

기본 기반 타입은 int지만, 다른 정수 타입으로 지정 가능합니다.

enum ByteEnum : byte { A = 1, B = 2 }
enum LongEnum : long { Min = -100, Max = 100 }

Flags 열거형 (비트 플래그용)

[Flags] 특성을 사용하면 비트 조합이 가능한 열거형을 만들 수 있습니다.

[Flags]
enum FileAccess
{
    None = 0,
    Read = 1,      // 0001
    Write = 2,     // 0010
    Execute = 4,   // 0100
    All = Read | Write | Execute  // 0111 = 7
}

// 사용
FileAccess access = FileAccess.Read | FileAccess.Write;  // 3
bool canRead = (access & FileAccess.Read) != 0;  // true
bool canExec = (access & FileAccess.Execute) != 0; // false

유용한 Enum 정적 메서드

메서드설명
Enum.GetNames(typeof(T))모든 상수 이름을 문자열 배열로 반환
Enum.GetValues(typeof(T))모든 상수 값을 배열로 반환
Enum.IsDefined(typeof(T), value)지정된 값/이름이 열거형에 정의되어 있는지 확인
Enum.Parse(typeof(T), "Name")문자열을 열거형 값으로 변환
Enum.TryParse<T>("Name", out result)안전한 파싱 (예외 없이 bool 반환)
Enum.ToObject(typeof(T), value)정수 값을 열거형 타입으로 변환

활용 예제

enum Colors { Red, Green, Blue }

// 모든 이름 출력
foreach (string name in Enum.GetNames(typeof(Colors)))
    Console.WriteLine(name);  // Red, Green, Blue

// 모든 값 출력
foreach (int val in Enum.GetValues(typeof(Colors)))
    Console.WriteLine(val);   // 0, 1, 2

// 문자열 → Enum 파싱
Colors c = (Colors)Enum.Parse(typeof(Colors), "Green");  // Colors.Green

// 안전한 파싱 (C# 7.0+)
if (Enum.TryParse("Yellow", out Colors result))
    Console.WriteLine(result);
else
    Console.WriteLine("정의되지 않은 색상");
모범 사례: 열거형 이름은 단수형(예: Day 아닌 Days)으로, [Flags] 열거형은 복수형으로 명명하세요. 기본값 0은 None 또는 의미상 '기본/미지정' 상태에 할당하세요.

C 언어

  1. C# Hello World – 첫 C# 애플리케이션 만들기
  2. C# 키워드와 식별자 이해: 규칙, 목록, 모범 사례
  3. C# 변수와 기본 데이터 타입 완벽 가이드
  4. C# 연산자 – C# 연산자 종합 가이드
  5. C# 비트 연산자와 시프트 연산자 완전 정복: 종합 가이드
  6. C# 기초: 입출력(Essential Input/Output) 완벽 가이드
  7. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  8. C# 주석 마스터하기: 종류, 모범 사례, XML 문서화
  9. C# switch 문 마스터하기: 문법, 예제, 모범 사례
  10. C# 삼항 연산자: 조건부 표현식을 간결하게 작성하는 법