C# 如何在枚举中声明特殊字符和空格

C# 如何在枚举中声明特殊字符和空格,c#,enums,C#,Enums,我的列举如下 private enum gettype { Xml/adf = 1, xml/adf and html = 2 }; 但据我所知,我们不能在字符之间声明特殊字符和空格。 我甚至试过“显示”和“描述”,但都不起作用。 那么有谁知道有什么解决办法。你不能。枚举成员必须是有效的C#标识符。但是,您可以使用各种属性装饰它们: using System.ComponentModel; private enum gettype { [Description("Xm

我的列举如下

private enum gettype
{
    Xml/adf = 1,
    xml/adf and html = 2
};
但据我所知,我们不能在字符之间声明特殊字符和空格。 我甚至试过“显示”和“描述”,但都不起作用。
那么有谁知道有什么解决办法。

你不能。枚举成员必须是有效的C#标识符。但是,您可以使用各种属性装饰它们:

using System.ComponentModel;

private enum gettype
{
    [Description("Xml/adf")]
    XmlAdf = 1,

    [Description("Xml/adf and html")]
    XmlAdfAndHtml = 2
}
现在,要将枚举值转换为描述字符串,或者反过来转换为描述字符串,您必须以某种方式使用反射。例如:

var enumValue = gettype.XmlAdfAndHtml;
var attr = (DescriptionAttribute[])
        typeof(gettype).GetField(enumValue.ToString())
                       .GetCustomAttributes(typeof(DescriptionAttribute), true);
var stringValue = attr[0].Description; // Xml/adf and html

参考以下堆栈溢出链接,这些链接可能对您有所帮助


正如我前面提到的,我使用了描述它不起作用,它说“属性在声明类型上无效”@user2530398由于它有
AttributeTargets.All
,所以它确实起作用。我自己也试过了,只是为了确定。你想在某个时候将枚举用作字符串吗?在这种情况下,您总是可以编写一个自定义解析器来删除
\uuu
,并在其位置添加空行。