열거형과 [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 특성의 의미
복습
복습: 명확하고 형식이 안전한 상수에는 열거형을 사용합니다. 안전하게 구문 분석하고 유효성을 검사합니다. 결합 가능한 옵션에는 [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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 구조체: 값 의미론과 불변성 패턴
- 레코드와 유사한 타입 및 값 기반 동등성 패턴
- 열거형과 [Flags]