有没有办法在C#枚举常量中加空格?我读到过,你可以在VB中这样做:
Public Enum EnumWithSpaces
ConstantWithoutSpaces
[Constant With Spaces]
End Enum
然后,...and像这样访问它:
Public Sub UsingEnumWithSpaces()
Dim foo As EnumWithSpaces = EnumWithSpaces.[Constant With Spaces]
End Sub
对我来说,这意味着CLR可以处理带空格的枚举。
在C#中有什么方法可以做到这一点吗?
发布于 2009-07-12 18:58:39
这篇博文可能会对你有所帮助:
http://blog.spontaneouspublicity.com/2008/01/17/associating-strings-with-enums-in-c/
摘自文章:
你会说:“
,但枚举在C#中不能有空格!”。好吧,我喜欢使用System.ComponentModel.DescriptionAttribute为枚举值添加更友好的描述。示例枚举可以重写为:
public enum States
{
California,
[Description("New Mexico")]
NewMexico,
[Description("New York")]
NewYork,
[Description("South Carolina")]
SouthCarolina,
Tennessee,
Washington
}
请注意,我不会将描述放在ToString()
版本显示正常的项目上。
发布于 2009-07-12 18:57:38
CLR完全可以处理标识符中的任何字符。然而,C#将标识符字符限制为CLS下的合法字符,而空格则不合法。顺便说一句,VB.NET也是如此-方括号内的空格在VB6中使用,但在VB.NET中不起作用。
发布于 2013-08-25 02:14:50
如果您使用的是Visual enum 3.0或更高版本,我发现只需扩展C#类并使用正则表达式在需要的地方插入空格会很方便:
public static class EnumExtension
{
public static String ToDisplayString(this Enum e)
{
Regex regex = new Regex(@"([^\^])([A-Z][a-z$])");
return regex.Replace(e.ToString(), new MatchEvaluator(m =>
{
return String.Format("{0} {1}", m.Groups[1].Value, m.Groups[2].Value);
}));
}
}
请注意,这允许您按原样处理任何枚举,而无需向每个值添加描述。
String enumWithSpaces = MessageBoxButtons.OKCancel.ToDisplayString();
https://stackoverflow.com/questions/1117542
复制相似问题