C#Enum问题

时间:2010-11-17 05:28:31

标签: c#

我需要使用其中一个值= 50/50

制作枚举

这不可能吗? Visual Studio似乎不喜欢它。

我可能不得不让这个字段成为数据库查找。

请告诉我。

6 个答案:

答案 0 :(得分:5)

C#枚举编译为密封类,继承自Enum,公共静态字段带有枚举成员的名称,因此,您要求编译器将字段命名为枚举值或50/50。< / p>

在命名时,枚举值与属性和字段具有相同的限制。

答案 1 :(得分:3)

您可以使用描述属性在描述中存储枚举的自定义值,然后使用它。

Enum:

public enum MyEnum
{
    [Description("50/50")]
    Enum1 = 1,

    [Description("Whatever")]
    Enum2 = 2,
}

使用反射读取存储在Description属性中的自定义值的方法。

private static string GetEnumCustomValue(Enum value)
{
   FieldInfo enumField = value.GetType().GetField(value.ToString());
   var attributes = 
      (DescriptionAttribute[])enumField.GetCustomAttributes(typeof(DescriptionAttribute)), false);
   if (attributes.Length > 0)
   {
      return attributes[0].Description;
   }
   return value.ToString();
}

答案 2 :(得分:1)

是的,确定是可能的

enum SomeEnum
{
    Value = 1 // 50/50!
}

枚举值是常量整数类型。

答案 3 :(得分:1)

如果你希望你的价值的名称是50/50,那你就不走运了。但是,您可以定义一个名称为FiftyFifty的值,在我看来,这个值就像描述一样。

答案 4 :(得分:0)

“50/50”值?你的意思是字符串值?不,C#不能那样做。

答案 5 :(得分:0)

dhinesh通过使用Description属性给出了一个很好的提示。

我会推荐以下枚举

public enum Chances
{
    [Description("No guess available")]
    NotDefined = 0,

    [Description("No chance")]
    None,

    [Description("50/50")]
    FiftyFifty,

    [Description("100%")]
    Always        
}

为了得到它的描述,你应该看看这些问题: