-1

私が以下を持っている場合:

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

私がする時:

 var a = TYPE.One;

変数aに「01」の形式の文字列を入力したいと思います。つまり、先行ゼロが付いた2桁の数字です。

SomeEnumにメソッドを割り当てることでこれを行うことは可能ですか?TYPE.One.ToString( "00")を使用できることに気付きましたが、列挙型に自己完結型で、非常に簡単に使用できるようにしたいと思います。

4

3 に答える 3

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、そのように使用することを単純に回避します。

于 2012-09-14T12:10:47.703 に答える
2

description属性を使用して、各列挙型要素に文字列を追加できます。

例えば

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();
于 2012-09-14T12:12:46.560 に答える
1

そのために列挙型を使用するのではなく、辞書やハッシュのようなものを使用してください。列挙型は、可能性のセットが限られており、値が必要ない、または必要ない場合に存在します。保存方法は関係ありません。

于 2012-09-14T12:00:58.150 に答える