如何在Enum C#中设置字符串?

Man*_*lia 4 .net c# enums

我想ENUM在c#中创建字符串.

基本上我不想设置表单名称Enum.当我在主页面打开表格的时候我想切换表格名称的情况并打开那个特定的表格.我知道ENUM只允许整数,但我想将其设置为string.任何的想法?

Pra*_*ana 18

枚举不能是字符串但你可以附加属性,你可以读取枚举的值如下....................

public enum States
{
    [Description("New Mexico")]
    NewMexico,
    [Description("New York")]
    NewYork,
    [Description("South Carolina")]
    SouthCarolina
}


public static string GetEnumDescription(Enum value)
{
    FieldInfo fi = value.GetType().GetField(value.ToString());

    DescriptionAttribute[] attributes =
        (DescriptionAttribute[])fi.GetCustomAttributes(
        typeof(DescriptionAttribute),
        false);

    if (attributes != null &&
        attributes.Length > 0)
        return attributes[0].Description;
    else
        return value.ToString();
}
Run Code Online (Sandbox Code Playgroud)

如果您想要通过它,这里是一篇好文章:将字符串与C#中的枚举相关联


Pet*_*ter 5

正如大家所提到的,枚举不能是C#中的字符串(或除整数之外的任何其他内容).我猜你来自Java?如果.NET具有此功能,那将是很好的,其中枚举可以是任何类型.

我通常绕过这种方式的方法是使用静态类:

public static class MyValues
{
    public static string ValueA { get { return "A"; } }
    public static string ValueB { get { return "B"; } }
}
Run Code Online (Sandbox Code Playgroud)

使用此技术,您还可以使用任何类型.您可以像使用枚举一样调用它:

if (value == MyValues.ValueA) 
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)