有没有什么办法可以把空间在C#枚举常量? 我读过,你可以这样做,在VB:
Public Enum EnumWithSpaces
ConstantWithoutSpaces
[Constant With Spaces]
End Enum
...然后访问它是这样的:
Public Sub UsingEnumWithSpaces()
Dim foo As EnumWithSpaces = EnumWithSpaces.[Constant With Spaces]
End Sub
这意味着对我来说,CLR能够处理空间枚举。
有没有办法在C#这样做吗?
本博客文章可以帮助你:
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()
该项目显示的版本就好了。
CLR可以处理标识符绝对任意字符。 然而,C#限制标识符字符到CLS,其空间不是根据这些法律。 这同样适用于VB.NET,顺便说一句 - 空间使用VB6工作在方括号内,但他们没有在VB.NET。
如果你正在使用Visual C#3.0或以上的工作,我认为很方便,只是延长了枚举类和使用正则表达式来插页空间让neccessary:
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();