我在C#,Visual Studio '05工作......在我的枚举中,如何使用'?'
字符?我的枚举是
下面:
public enum Questions
{
How_old_are_you?_= 0,//How to set the ? character
What_is_your_name= 1
}
我添加'?'
字符后会出现一些错误。
答案 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 ?");