2012-09-14 2 views
-2

나는 다음과 같은 경우 :Enum이 정수가 아닌 다른 것을 반환하도록 할 수 있습니까?

public enum TYPE 
{ 
    One = 1, 
    Two = 2, 
    Three = 3 
} 

내가 할 경우 :

var a = TYPE.One; 

나는 그것이 형식 "01"에서 문자열로 변수 a를 채우는 싶습니다. 즉, 앞에 0이 붙은 두 자릿수입니다.

몇 가지 방법을 SomeEnum에 할당하여이 작업을 수행 할 수 있습니까? TYPE.One.ToString ("00")을 사용할 수 있다는 것을 알았지 만 열거 형에 자체 포함되어 있으며 사용하기가 매우 간단합니다.

+0

를 사용합니다. http://stackoverflow.com/questions/12403065/how-can-i-assign-a-string-to-an-enum-instead-of-an-intereger-value-in-c – Habib

+0

값을 꾸밀 수 있습니다. 속성이있는 경우 –

답변

2

은 같은 것을 할 수 있습니다

public static class Ext { 

    public static string ToMyString(this Enumer en) { 
     return ((int)en).ToString("00"); 
    } 
} 

와 같은 사용 후

는 :

public enum TYPE { One = 1, Two = 2, Three = 3 } 
Type t = TYPE.One; 

string s = t.ToMyString(); 

예, 개념적으로는 문자열을 선언하는 등 같은, 그러나 그것은 확장 메서드 안에 숨겨져.

다른 해결책은 다음과 같습니다.이 시점에서 간단히이 방법으로 enums을 사용하지 마십시오.

1

enum을 사용하지 말고 사전이나 해시 같은 것을 사용하십시오. Enum은 제한된 가능성이 있고 값을 원하거나 필요로하지 않을 때 있습니다. 그것이 저장되는 방법은 부적절합니다.

+0

사전이나 해시를 사용하는 방법에 대한 간단한 예를 들어 줄 수 있습니까? 내가 바라는 또 다른 것은 정적 클래스를 사용하는 것이다. 내가 enums에 대해 좋아하는 것은 유형 안전성이었습니다. – Angela

+0

인터넷에서 많은 정보를 찾을 수 있습니다. http://www.dotnetperls.com/dictionary –

0

description 속성을 사용하여 각 enum 요소에 문자열을 추가 할 수 있습니다.

public Enum MyEnum 
{ 
    [Description("Value A Description")] 
    ValueA, 
    [Description[("Value B Description")] 
    ValueB 
} 

는 설명 값을 검색하려면, 당신은 당신의 열거에 설명을 추가 한 다음이 얻을 수있는 확장 클래스를

public static class MyEnumExtender 
{ 
    public static string Description(this Enum Value) 
    { 
     FieldInfo FI = Value.GetType().GetField(Value.ToString()); 
     IEnumerable<DescriptionAttribute> Attributes = FI.GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>(); 
     return (Attributes.Any()) ? Attributes.First().Description : Value.ToString(); 
    } 
} 

.... 

MyEnum EnumVar = MyEnum.ValueA; 
string Description = EnumVar.Description(); 
관련 문제