본문 바로가기
C++ 200제/코딩 IT 정보

C# Enum string 변환 2가지 방법. ToString, GetNames

by vicddory 2017. 3. 10.

C# Enum을 string로 변환할 때 두 가지 방법을 이용할 수 있습니다.

하나는 단일 개체를 string 문자열로 변환하는 ToString() 응용 방법이고, 다른 하나는 Enum 전체를 배열로 받는 GetNames()를 응용하는 방법입니다.

 

이 두 가지 프로그래밍 방법 모두 다루니 참조해 주세요.

 

C# Enum string 변환 2가지 방법. ToString, GetNames
[C# 프로그래밍 예제 - Enum to String]

 

C# Enum.ToString(). Enum을 문자열로 변환하는 함수입니다. 변환된 string은 Enum의 이름을 표시하며, 해당 문자열은 변수 등에 저장해 유동적으로 사용할 수 있습니다.

 

예제. 예제를 위해서 C# enum 타입의 열거형을 하나 생성합니다. 반복문에서 인덱스를 증가하며 해당 문자열을 확인해 보겠습니다.

 

아래 프로그램에서 Priority.Critical의 인덱스는 4입니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
 
enum Priority
{
    None,
    Trivial,
    Normal,
    Important,
    Critical
}
 
class Program
{
    static void Main()
    {
        // Write string representation for Important.
        Priority priorityValue = Priority.Important;
        string enumValue = priorityValue.ToString();
 
        // Loop through enumerations.
        // ... Write string representations.
        Console.WriteLine("::FOR::");
        for (Priority p = Priority.None;
            p <= Priority.Critical;
            p++)
        {
            string value = p.ToString();
            Console.WriteLine(value);
        }
 
        Console.WriteLine("::GETVALUES::");
        foreach (Priority p in Enum.GetValues(typeof(Priority)))
        {
            string value = p.ToString();
            Console.WriteLine(value);
        }
    }
}
cs

 

C# Enum -> string 결과

 

1
2
3
4
5
6
7
8
9
10
11
12
::FOR::
None
Trivial
Normal
Important
Critical
::GETVALUES::
None
Trivial
Normal
Important
Critical
cs
 

위의 프로그램. 위에서 Priority란 enum을 이용했습니다. 두 방법 모두 enum 요소를 첫 번째 값부터 순차적으로 호출했습니다. 5개의 C# enum 값을 출력했으며, GetNames() 함수 또한 ToString() 함수와 같은 문자열을 반환하는 프로그래밍입니다.

 

다른 형태. base.GetType(), GetValueField() 함수를 호출한 뒤 InternalGetValue()를 이용하면 다른 형태로도 문자열을 얻을 수 있습니다.

 

Warning - 이 방법은 성능에 영향을 줍니다. 그렇지만 코드 복잡도를 감소하며, string을 따로 저장할 필요가 없다는 장점이 있습니다.

 

c# ToString GetNames
[C# 열거형 문자열로 변환]

 

1
2
3
4
5
6
7
8
9
public override string ToString()
{
    Type type = base.GetType();
 
    object obj2 = ((RtFieldInfo)GetValueField(type))
        .InternalGetValue(thisfalse);
 
    return InternalFormat(type, obj2);
}
cs

 

Enum.GetNames()를 이용하면 C# Enum의 문자열 배열을 얻는 프로그래밍도 가능합니다.

 

위에 소개한 것처럼 루프 구조의 코드보단 GetNames를 사용하는 것이 바람직하나, 상황에 맞춰 유동적으로 구현하는 것이 가장 현명한 방법입니다.

 

혹시, 독학으로 C# 공부 중이라면 기초를 제대로 닦기 위해서라도 국비지원 학원 알아보는 걸 추천합니다.

 

[최대 500만원. 국비지원 학원 알아보기]

 

내일배움카드 발급 자격 확인 및 신청 방법 가이드 - 1mm

내일배움카드 발급 자격과 신청방법에 대해 A to Z 상세하게 가이드로 알려드립니다.

kako.co.kr

 

관련 글

C# 비트연산 - 플래그 응용 (bit flag enum 연산자 예제)

C# string <-> 숫자 변환 방법 3가지 (TryParse, Convert, ToInt)

C# string 예제 Compare, Contains, Substring, Join 4가지

C# URI Anchor 예약어 # 및 Url Encode 사이트

C# Dictionary Value 값 가져오기 (TryGetValue, out 예제)

C++ string Split 함수, 문자열 자르기 또는 나누기

댓글