728x90
1. Enum 정의
// Enum 타입 정의
enum TestEnum
{
test1, // 0
test2, // 1
test3 // 2
}
2. Enum 값 -> 문자열 (Enum.GetName)
- Enum.GetName 메서드를 사용하여 Enum 값에 해당하는 이름을 문자열로 가져옵니다.
- 첫 번째 매개변수: typeof(YourEnumType)
- 두 번째 매개변수: Enum 값 또는 정수 값.
using System;
class Program
{
static void Main()
{
// Enum 값 -> 문자열
string name1 = Enum.GetName(typeof(TestEnum), 0); // 정수값 0의 이름
string name2 = Enum.GetName(typeof(TestEnum), TestEnum.test1); // Enum 값
Console.WriteLine($"name1: {name1}, name2: {name2}"); // 출력: name1: test1, name2: test1
}
}
3. Enum 값 -> 문자열 배열 (Enum.GetNames)
- Enum.GetNames 메서드는 Enum에 정의된 모든 이름을 배열로 반환합니다.
using System;
class Program
{
static void Main()
{
// Enum 값 -> 문자열 배열
string[] names = Enum.GetNames(typeof(TestEnum));
// 모든 이름 출력
foreach (string name in names)
{
Console.Write($"{name}, ");
}
// 출력: test1, test2, test3,
}
}
4. 문자열 -> Enum 값 (Enum.Parse)
- Enum.Parse 메서드를 사용하여 문자열을 Enum 값으로 변환합니다.
- 주의: 입력 문자열은 대소문자 구분 없이 사용할 수 있습니다.
using System;
class Program
{
static void Main()
{
// 문자열 -> Enum
TestEnum myenum1 = (TestEnum)Enum.Parse(typeof(TestEnum), "test1");
// Enum 값을 정수로 출력
Console.WriteLine((int)myenum1); // 출력: 0
}
}
5. 문자열 -> Enum 값 (일반화된 메서드)
- 일반화된 메서드를 작성하여 다양한 Enum 타입에서 사용할 수 있도록 확장합니다.
using System;
class Program
{
static void Main()
{
// 문자열 -> Enum (제네릭 메서드 사용)
TestEnum myenum2 = StringToEnum<TestEnum>("test1");
// Enum 값을 정수로 출력
Console.WriteLine((int)myenum2); // 출력: 0
}
// 문자열을 Enum 값으로 변환하는 일반화 메서드
public static T StringToEnum<T>(string value) where T : Enum
{
return (T)Enum.Parse(typeof(T), value);
}
}
6. 추가: Enum 값 -> 숫자 값
- Enum 값을 정수로 변환하려면 (int)를 사용합니다.
using System;
class Program
{
static void Main()
{
TestEnum myEnum = TestEnum.test2;
// Enum -> 정수
int value = (int)myEnum;
Console.WriteLine($"Enum 값: {myEnum}, 정수 값: {value}"); // 출력: Enum 값: test2, 정수 값: 1
}
}
728x90
'VisualStudio > C#' 카테고리의 다른 글
[C#] ProtoBuff-net 사용 방법 (0) | 2023.11.02 |
---|---|
[C#] List<T> LINQ 모음 (0) | 2023.09.21 |
[C#] Byte와 문자열간 변환 방법과 인코딩 방식 설명 (0) | 2023.02.09 |
[C#] Struct를 byte로 변환, byte를 Struct로 변환 (0) | 2023.02.02 |
[C#] Action.Invoke() vs Action() 차이 (0) | 2023.01.05 |