如何使用 ?枚举中的字符

时间:2009-07-26 08:51:47

标签: c#

我在C#,Visual Studio '05工作......在我的枚举中,如何使用'?'字符?我的枚举是 下面:

public enum Questions
{
    How_old_are_you?_= 0,//How to set the ? character 
    What_is_your_name= 1
}

我添加'?'字符后会出现一些错误。

5 个答案:

答案 0 :(得分:13)

?不是C#标识符中的有效字符(包括枚举值)。我强烈建议你使用类似的东西:

public enum Question
{
    [Description("How old are you?")]
    Age,

    [Description("What is your name?")]
    Name
}

或者有地图或资源文件等 - 只是不要试图将枚举的名称变成自然语言描述。

编辑:供参考,如果您想从代码中获取Description,请按以下步骤操作(感谢Christian Hayter):

((DescriptionAttribute) Attribute.GetCustomAttribute(
    typeof(Question).GetField("Age", BindingFlags.Public | BindingFlags.Static), 
        typeof(DescriptionAttribute), false)
).Description;

答案 1 :(得分:2)

你做不到。 ?是一个运算符,因此包含它的字符序列不是有效的标识符。

答案 2 :(得分:1)

您不能在枚举标识符中使用问号。枚举中的标识符遵循与其他标识符相同的规则。

您可以使用@字符将保留关键字用作标识符,但仍然不能使用标识符中不允许的字符。

答案 3 :(得分:0)

您可以在问题后添加q以使其具有描述性。例如:

  How_old_are_you_q= 0,        //Replace ? with q
    What_is_your_name_q= 1

答案 4 :(得分:0)

另一种可能的解决方案可能是枚举和字典之间的混合:

public enum Question
{
  Age,
  Name
}

...

Dictionary<Question,string> Questions = new Dictionary<Question,string>();

Questions.Add(Question.Age,  "How old are you ?");
Questions.Add(Question.Name, "What is your name ?");