다양한 enum 처리

1. Enum.Parse 사용

문자열을 enum으로 변경

using System; enum Colors { Red, Green, Blue } class Program { static void Main() { string colorName = "Green"; Colors color = (Colors)Enum.Parse(typeof(Colors), colorName); Console.WriteLine(color); // 출력: Green } }
  • Enum.Parse는 문자열을 enum 값으로 변환합니다.
  • 문자열이 enum 값과 정확히 일치해야 합니다. (대소문자 구분)
  • 변환 실패 시 ArgumentException이 발생합니다.

2. Enum.TryParse 사용 (권장)


using System; enum Colors { Red, Green, Blue } class Program { static void Main() { string colorName = "Green"; if (Enum.TryParse(colorName, out Colors color)) { Console.WriteLine(color); // 출력: Green } else { Console.WriteLine("Invalid enum value"); } } }
  • Enum.TryParse는 안전하게 변환을 시도하며 실패 시 false를 반환합니다.
  • 대소문자 구분을 하지 않으려면 추가 매개변수를 사용할 수 있습니다.

3. 대소문자 구분 없이 변환


using System; enum Colors { Red, Green, Blue } class Program { static void Main() { string colorName = "green"; if (Enum.TryParse(colorName, true, out Colors color)) // true: 대소문자 무시 { Console.WriteLine(color); // 출력: Green } else { Console.WriteLine("Invalid enum value"); } } }
  • Enum.TryParse의 두 번째 매개변수로 true를 전달하여 대소문자를 무시합니다.

4. 문자열이 Enum 값인지 확인 후 변환


using System; enum Colors { Red, Green, Blue } class Program { static void Main() { string colorName = "Yellow"; if (Enum.IsDefined(typeof(Colors), colorName)) { Colors color = (Colors)Enum.Parse(typeof(Colors), colorName); Console.WriteLine(color); } else { Console.WriteLine("Value is not a valid enum member."); } } }
  • Enum.IsDefined를 사용해 값이 유효한지 사전 확인.

5. 숫자를 Enum 값으로 변환


using System; enum Colors { Red = 1, Green = 2, Blue = 3 } class Program { static void Main() { int colorValue = 2; Colors color = (Colors)colorValue; Console.WriteLine(color); // 출력: Green } }
  • 숫자를 직접 캐스팅하여 enum 값으로 변환.

6. LINQ로 문자열을 기반으로 검색


using System; using System.Linq; enum Colors { Red, Green, Blue } class Program { static void Main() { string colorName = "blue"; var matchingColor = Enum.GetValues(typeof(Colors)) .Cast<Colors>() .FirstOrDefault(c => c.ToString().Equals(colorName, StringComparison.OrdinalIgnoreCase)); Console.WriteLine(matchingColor); // 출력: Blue } }
  • LINQ를 사용하여 문자열과 일치하는 enum 값을 검색.

7. 예외 처리 포함

using System; enum Colors { Red, Green, Blue } class Program { static void Main() { try { string colorName = "Purple"; Colors color = (Colors)Enum.Parse(typeof(Colors), colorName); Console.WriteLine(color); } catch (ArgumentException) { Console.WriteLine("Invalid enum value"); } } }

댓글 쓰기

댓글 목록