C#/.NET에서 열거형 반복 방법
열거형을 반복하려면 여러 가지 방법을 사용할 수 있습니다. 가장 일반적인 방법은 다음과 같습니다.
foreach 루프 사용:
foreach (var day in DaysOfWeek)
{
Console.WriteLine(day);
}
위 코드는 DaysOfWeek
열거형의 모든 멤버를 반복하고 각 멤버를 콘솔에 출력합니다.
for (int i = 0; i < Enum.GetValues(typeof(DaysOfWeek)).Length; i++)
{
Console.WriteLine((DaysOfWeek)i);
}
위 코드는 Enum.GetValues
메서드를 사용하여 열거형의 모든 멤버를 배열로 가져온 다음 for 루프를 사용하여 배열을 반복합니다. 각 반복에서 열거형 멤버를 해당 숫자 값으로 변환하여 콘솔에 출력합니다.
switch 문 사용:
var day = DayOfWeek.Wednesday;
switch (day)
{
case DayOfWeek.Monday:
Console.WriteLine("월요일");
break;
case DayOfWeek.Tuesday:
Console.WriteLine("화요일");
break;
// ... 생략
}
위 코드는 switch
문을 사용하여 열거형 멤버를 기반으로 코드를 실행합니다. 각 case
문은 열거형 멤버와 일치하는 값을 나타내며, 해당 값과 일치하는 경우 해당 case
블록 내의 코드가 실행됩니다.
참고:
- 열거형을 반복할 때 사용하는 방법은 개인의 선호와 상황에 따라 다릅니다.
foreach
루프는 간단하고 명확한 경우에 사용하기 좋습니다.for
루프는 열거형의 멤버에 대한 더 많은 제어가 필요한 경우에 사용할 수 있습니다.switch
문은 특정 열거형 멤버에 따라 코드를 분기해야 하는 경우에 사용할 수 있습니다.
C#/.NET 열거형 반복 예제 코드
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
foreach (var day in DaysOfWeek)
{
Console.WriteLine(day);
}
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
for (int i = 0; i < Enum.GetValues(typeof(DaysOfWeek)).Length; i++)
{
Console.WriteLine((DaysOfWeek)i);
}
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
var day = DayOfWeek.Wednesday;
switch (day)
{
case DayOfWeek.Monday:
Console.WriteLine("월요일");
break;
case DayOfWeek.Tuesday:
Console.WriteLine("화요일");
break;
// ... 생략
}
설명:
- 예제 1:
foreach
루프를 사용하여DaysOfWeek
열거형의 모든 멤버를 반복하고 각 멤버를 콘솔에 출력합니다. - 예제 3:
switch
문을 사용하여day
변수의 값에 따라 코드를 실행합니다.day
변수의 값은DaysOfWeek.Wednesday
로 설정되어 있으므로 "수요일"이 콘솔에 출력됩니다.
C#/.NET에서 열거형 반복을 위한 대체 방법
LINQ 사용:
LINQ (Language Integrated Query)는 C#/.NET에 포함된 강력한 도구 세트로, 데이터 쿼리 및 조작을 수행하는 데 사용할 수 있습니다. 열거형을 반복하는 경우 다음과 같은 LINQ 쿼리를 사용할 수 있습니다.
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
var days = Enum.GetValues(typeof(DaysOfWeek)).Cast<DaysOfWeek>();
foreach (var day in days.Where(d => d != DaysOfWeek.Sunday))
{
Console.WriteLine(day);
}
위 코드는 Where
clause를 사용하여 Sunday
를 제외한 모든 DaysOfWeek
열거형 멤버를 선택한 다음 foreach
루프를 사용하여 선택된 멤버를 반복합니다.
직접 열거형 값 사용:
열거형이 작고 멤버의 개수가 적은 경우 직접 열거형 값을 사용하여 반복하는 방법도 있습니다. 예를 들어 다음과 같이 할 수 있습니다.
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
Console.WriteLine(DaysOfWeek.Monday);
Console.WriteLine(DaysOfWeek.Tuesday);
// ... 생략
Reflection 사용:
Reflection은 C#/.NET에서 런타임에 객체 및 유형에 대한 정보를 검색하고 조작하는 데 사용할 수 있는 강력한 기능입니다. 열거형을 반복하는 경우 다음과 같은 Reflection 코드를 사용할 수 있습니다.
enum DaysOfWeek { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
var type = typeof(DaysOfWeek);
var fields = type.GetFields();
foreach (var field in fields)
{
if (field.IsStatic && field.IsPublic)
{
Console.WriteLine((DaysOfWeek)field.GetValue(null));
}
}
위 코드는 Reflection
을 사용하여 DaysOfWeek
열거형의 모든 멤버를 가져온 다음 foreach
루프를 사용하여 멤버를 반복합니다. 각 반복에서 멤버의 값을 콘솔에 출력합니다.
- 앞서 언급한 방법 외에도 열거형을 반복하는 데 사용할 수 있는 다른 방법들이 있을 수 있습니다.
- LINQ는 열거형 멤버를 필터링하거나 특정 조건에 따라 처리해야 하는 경우에 유용합니다.
- 직접 열거형 값 사용은 열거형이 작고 멤버의 개수가 적은 경우에 적합합니다.
- Reflection은 복잡한 시나리오에서 유연성을 제공하지만, 코드가 더 복잡하고 이해하기 어려울 수 있습니다.
c# .net loops