2013-02-05 2 views
0

올바른지 이해하면 할당 된 int 값이있는 열거 형 목록이 있습니다. 나는이 값을 문자열이 아닌 int로 간주하는 방법이 있습니까?C# 열거 형 숫자 값으로, 해당 값을 문자열로 읽으시겠습니까?

내 열거

public enum CsvRowFormat 
    { 
     BeginningOfFile = 01, 
     School = 02, 
     Student = 03, 
     EndOfFile = 04 
    } 

현재 내가

studentRowFormat.AppendFormat("0{0}",(int)TransactionFile.CsvRowFormat.Student).ToString(); 
+0

"0"+ (int) TransactionFile.CsvRowFormat.Student – kenny

+0

@kenny 그는 이미 그가 사용하고 있다고 말했습니다. – Servy

+3

[표준 숫자 형식] (http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx)을 살펴보십시오. '{0 : D2} '를 사용하면 앞에 0이 붙은 1 자리 값을 출력합니다. –

답변

3

"{0:D2}"을 형식 문자열로 사용할 수 있습니다. 길이가 2가 될 때까지 0으로 시작하는 문자열을 채 웁니다.

enumenum은 문자열 값이 아닌 할당하려는 값의 숫자 값을 저장하기 만하므로 해당 값에 대한 지식을 보유하지 않습니다. 당신이 선행 제로를 공급했다는 사실. 기본 enum 유형은 문자열로 백업 할 수 없습니다. 그들은 정수 값으로 뒷받침되어야합니다. 문자열 기반 열거 형처럼 "보이는"고유 한 사용자 정의 유형을 만들 수 있지만 이러한 솔루션을 사용하면 기존 정수 enum과 함께보다 적절한 형식 문자열을 사용하는 것보다 훨씬 많은 노력이 필요합니다.

3

INT32가 a ToString() that takes a format string을 가지고 비효율적 찾을 수있는 다음과 같은 값을 읽고 있어요. 따라서 가장 쉬운 방법은 다음과 같습니다.

studentRowFormat.Append(((int)TransactionFile.CsvRowFormat.Student).ToString("D2")); 

열거 형 선언에는 선행 0이 필요 없습니다.

+0

숫자 형식을 사용하려면 ToString을 사용하는 대신 형식 문자열에서 사용할 수 있습니다 int에 – Servy

+0

물론 가능하지만 많은 사람들이 ToString() 형식에 대해 알지 못하고 다른 누군가가 AppendFormat() 접근법을 확장한다고 생각했습니다. – MNGwinn

0

불행히도 값을 int가 아닌 문자열로 간주 할 방법이 없습니다. C# Enum Reference을 참조하십시오. 다른 답변에서 제공하는 서식 옵션을 사용하거나 코드를 훨씬 깔끔하게 정리할 수있는 구조체를 작성할 수 있습니다. 열거 형을 사용하는 이유를 알지 못하기 때문에 구조체에 약간의 동작 차이가 있음을 지적해야합니다. 다음은이 솔루션에 대한 구조체를 사용하는 예는 다음과 같습니다

public struct CsvRowFormat 
{ 
    public string Value { get; private set; } 
    private CsvRowFormat(string value) : this() 
    { 
     Value = value; 
    } 

    public static BeginningOfFile { get { return new CsvRowFormat("01"); } } 
    public static School { get { return new CsvRowFormat("02"); } } 
    public static Student { get { return new CsvRowFormat("03"); } } 
    public static EndOfFile { get { return new CsvRowFormat("04"); } } 
} 

샘플 사용법 :이 도움이

studentRowFormat.Append(TransactionFile.CsvRowFormat.Student); 

희망!