0Pricing
C# Academy · 강의

열거형과 [Flags]

명시적 값과 기반 타입을 사용해 열거형을 정의하고, 안전하게 변환하고 구문 분석하며, [Flags]로 조합 가능한 옵션을 모델링합니다.

열거형과 [Flags]은(는) CoddyKit의 무료 C# Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 C# Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

열거형 개요

목표: 이름이 지정된 상수에는 열거형을 사용하고, 조합 가능한 옵션에는 [Flags]를 사용합니다.

  • 이름은 숫자에 대응합니다
  • 기반 형식(int가 기본값)
  • 캐스팅, 구문 분석, 유효성 검사
  • [Flags]를 사용한 비트 단위 조합

기본 열거형

열거형은 이름이 지정된 상수입니다. 이름을 출력하거나 기반 숫자로 형 변환할 수 있습니다.

using System;

public enum OrderStatus
{
  Pending = 0,
  Processing = 1,
  Shipped = 2,
  Delivered = 3,
  Cancelled = 4
}

public class Program
{
  public static void Main(string[] args)
  {
    OrderStatus s = OrderStatus.Processing;
    Console.WriteLine("Status = " + s);
    Console.WriteLine("Numeric = " + (int)s);
  }
}

기반 형식 및 형 변환

기반 형식(short, byte 등)을 선택할 수 있습니다. 숫자에서 형 변환해도 값의 유효성은 검사되지 않습니다.

using System;

// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
  Ok = 200,
  NotFound = 404
}

public class Program
{
  public static void Main(string[] args)
  {
    short code = (short)HttpCode.Ok; // cast to number
    HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
    Console.WriteLine("code=" + code);
    Console.WriteLine("fromNum=" + fromNum);
  }
}

구문 분석 및 유효성 검사

텍스트를 읽을 때 Enum.TryParse를 사용하고, 숫자 값의 유효성을 검사할 때 Enum.IsDefined를 사용합니다.

using System;

public enum Color
{
  Red = 1, Green = 2, Blue = 3
}

public class Program
{
  public static void Main(string[] args)
  {
    Color c;
    bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
    Console.WriteLine("Parsed? " + ok + " value=" + c);

    // Validate a numeric value before casting
    int raw = 4;
    bool valid = Enum.IsDefined(typeof(Color), raw);
    Console.WriteLine("Is 4 a defined Color? " + valid);
  }
}

[Flags] 실전 활용

[Flags]를 추가하고 2의 거듭제곱 값을 할당합니다. |로 결합하고, &로 확인하며, ~과 &로 제거합니다.

using System;

[Flags]
public enum FileAccessMode
{
  None  = 0,
  Read  = 1,   // 0001
  Write = 2,   // 0010
  Exec  = 4    // 0100
}

public class Program
{
  public static void Main(string[] args)
  {
    FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
    Console.WriteLine("Mode = " + m); // prints "Read, Write"

    // Test a flag (two common patterns)
    bool canWrite = (m & FileAccessMode.Write) != 0;
    Console.WriteLine("Can write? " + canWrite);

    // Remove a flag
    m = m & ~FileAccessMode.Write;
    Console.WriteLine("After remove: " + m);
  }
}

열거형 팁

팁:

  • 값을 명시적으로 지정하고 안정적으로 유지합니다.
  • [Flags]에는 2의 거듭제곱을 사용하고 None = 0을 포함합니다.
  • Enum.TryParse/IsDefined로 입력값의 유효성을 검사합니다.
  • 공개 API에서 원시 정수를 사용하지 말고 열거형을 우선합니다.

Flags 특성의 의미

빠른 확인: 열거형이 Read | Write처럼 비트 단위로 결합할 수 있는 옵션을 나타내도록 하는 특성은 무엇입니까?

복습

복습: 명확하고 형식이 안전한 상수에는 열거형을 사용합니다. 안전하게 구문 분석하고 유효성을 검사합니다. 결합 가능한 옵션에는 [Flags]를 추가하고 비트 연산자로 플래그를 설정, 확인, 제거합니다.

자주 묻는 질문

“열거형과 [Flags]” 강의는 무료인가요?

네 — “열거형과 [Flags]” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 C# Academy 강의 전체를 잠금 해제할 수 있습니다. C# Academy 강의에는 총 3개의 강의가 포함되어 있습니다.

“열거형과 [Flags]”에서 뭘 배우나요?

명시적 값과 기반 타입을 사용해 열거형을 정의하고, 안전하게 변환하고 구문 분석하며, [Flags]로 조합 가능한 옵션을 모델링합니다. 브라우저에서 직접 실행하는 실습 코드로 C# Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

C# Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 C# Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.

“열거형과 [Flags]” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 C# Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 C# Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 구조체: 값 의미론과 불변성 패턴
  2. 레코드와 유사한 타입 및 값 기반 동등성 패턴
  3. 열거형과 [Flags]
← C# Academy(으)로 돌아가기