如果我有以下内容:
public enum TYPE
{
One = 1,
Two = 2,
Three = 3
}
当我这样做时:
var a = TYPE.One;
我希望用格式“01”中的字符串填充变量a。换句话说,两个数字带有前导零。
是否可以通过为SomeEnum分配一些方法来做到这一点?我意识到我可以使用TYPE.One.ToString(“00”),但我想让它自包含在枚举中并且使用起来非常简单。
答案 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 :(得分:2)
您可以使用description属性为每个枚举元素添加一个字符串。
e.g。
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();
答案 2 :(得分:1)
不要为此使用枚举,而是使用词典或哈希。当存在有限的可能性并且您不想要或不需要值时,枚举就在那里。如何存储是无关紧要的。