열거형 형식(또는 열거형 형식)은 기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의된 값 형식입니다. 열거형 형식을 정의하려면 키워드를 enum
사용하고 열거형 멤버의 이름을 지정합니다.
enum Season
{
Spring,
Summer,
Autumn,
Winter
}
기본적으로 열거형 멤버의 연결된 상수 값은 형식 int
이며, 0으로 시작하고 정의 텍스트 순서에 따라 1씩 증가합니다. 다른 정수 숫자 형식을 열거형 형식의 기본 형식으로 명시적으로 지정할 수 있습니다. 다음 예제와 같이 연결된 상수 값을 명시적으로 지정할 수도 있습니다.
enum ErrorCode : ushort
{
None = 0,
Unknown = 1,
ConnectionLost = 100,
OutlierReading = 200
}
열거형 형식의 정의 내에 메서드를 정의할 수 없습니다. 열거형 형식에 기능을 추가하려면 확장 메서드를 만듭니다.
열거형 형식 E
의 기본값은 0에 해당하는 열거형 멤버가 없더라도 식 (E)0
으로 생성되는 값입니다.
열거형 형식을 사용하여 상호 배타적인 값 집합 또는 선택 항목의 조합에서 선택한 항목을 나타냅니다. 선택 항목의 조합을 나타내려면 열거형 형식을 비트 플래그로 정의합니다.
열거형 형식을 비트 플래그로 사용하기
열거형 형식이 선택 항목의 조합을 나타내려면 개별 선택이 비트 필드가 되도록 해당 선택 항목에 대한 열거형 멤버를 정의합니다. 즉, 해당 열거형 멤버의 연결된 값은 2의 권한이어야 합니다. 그런 다음 비트 논리 연산 |
자를 사용하거나 &
선택 항목을 결합하거나 선택 항목의 조합을 각각 교차할 수 있습니다. 열거형 형식이 비트 필드를 선언함을 나타내려면 Flags 특성을 적용합니다. 다음 예제와 같이 열거형 형식의 정의에 몇 가지 일반적인 조합을 포함할 수도 있습니다.
[Flags]
public enum Days
{
None = 0b_0000_0000, // 0
Monday = 0b_0000_0001, // 1
Tuesday = 0b_0000_0010, // 2
Wednesday = 0b_0000_0100, // 4
Thursday = 0b_0000_1000, // 8
Friday = 0b_0001_0000, // 16
Saturday = 0b_0010_0000, // 32
Sunday = 0b_0100_0000, // 64
Weekend = Saturday | Sunday
}
public class FlagsEnumExample
{
public static void Main()
{
Days meetingDays = Days.Monday | Days.Wednesday | Days.Friday;
Console.WriteLine(meetingDays);
// Output:
// Monday, Wednesday, Friday
Days workingFromHomeDays = Days.Thursday | Days.Friday;
Console.WriteLine($"Join a meeting by phone on {meetingDays & workingFromHomeDays}");
// Output:
// Join a meeting by phone on Friday
bool isMeetingOnTuesday = (meetingDays & Days.Tuesday) == Days.Tuesday;
Console.WriteLine($"Is there a meeting on Tuesday: {isMeetingOnTuesday}");
// Output:
// Is there a meeting on Tuesday: False
var a = (Days)37;
Console.WriteLine(a);
// Output:
// Monday, Wednesday, Saturday
}
}
자세한 내용 및 예제는 System.FlagsAttribute API 참조 페이지와 비독점 멤버 및 API 참조 페이지의 Flags 특성 섹션을 System.Enum 참조하세요.
System.Enum 형식 및 열거형 제약 조건
형식은 System.Enum 모든 열거형 형식의 추상 기본 클래스입니다. 열거형 형식 및 해당 값에 대한 정보를 가져오는 여러 메서드를 제공합니다. 자세한 내용 및 예제는 API 참조 페이지를 참조 System.Enum 하세요.
기본 클래스 제약 조건(System.Enum
조건이라고 함)에서 형식 매개 변수가 열거형 형식임을 지정할 수 있습니다. 모든 열거형 형식은 형식 매개 변수가 nullable이 아닌 값 형식임을 지정하는 데 사용되는 제약 조건을 충족 struct
합니다.
변환
열거형 형식의 경우 열거형 형식과 해당 기본 정수 형식 간에 명시적 변환이 존재합니다. 열거형 값을 내부 형식으로 캐스팅 하면 결과는 열거형 멤버의 연결된 정수 값입니다.
public enum Season
{
Spring,
Summer,
Autumn,
Winter
}
public class EnumConversionExample
{
public static void Main()
{
Season a = Season.Autumn;
Console.WriteLine($"Integral value of {a} is {(int)a}"); // output: Integral value of Autumn is 2
var b = (Season)1;
Console.WriteLine(b); // output: Summer
var c = (Season)4;
Console.WriteLine(c); // output: 4
}
}
이 메서드를 Enum.IsDefined 사용하여 열거형 형식에 특정 관련 값이 있는 열거형 멤버가 포함되어 있는지 여부를 확인합니다.
열거형 형식의 경우, 각각 boxing 및 unboxing 변환이System.Enum 형식에 대해 존재합니다.
C# 언어 사양
자세한 내용은 C# 언어 사양의 다음 섹션을 참조하세요.
참고하십시오
.NET