我在SharePoint Web部件中创建此选择框,需要使用当前版本下拉,因此我需要使用枚举。
public enum SelectVersionEnum { 2010, 2007 };
那么你可以看到它在哪里断开,有没有办法在枚举中使用整数? 最重要的是我想用
public enum SelectVersionEnum { 2010=14, 2007=12 };
答案 0 :(得分:7)
枚举成员必须是有效的C#标识符 他们不能从数字开始。
相反,您可以使用Office2007, Office2010
或V2007, V2010
等内容。
答案 1 :(得分:7)
不,您不能使用整数名称命名枚举。
枚举值名称是普通标识符,必须遵循与其他所有内容相同的规则。
但是,您可以使用:
public enum SelectVersionEnum
{
Version2007 = 12,
Version2010 = 14
}
此外,Enum.Parse
可以将带有整数的字符串解析为相应的枚举值,即使字符串中描述的值不存在也是如此。
在LINQPad中尝试以下内容:
void Main()
{
Enum.Parse(typeof(SelectVersionEnum), "12").Dump();
Enum.Parse(typeof(SelectVersionEnum), "14").Dump();
Enum.Parse(typeof(SelectVersionEnum), "2007").Dump();
}
public enum SelectVersionEnum
{
Version2007 = 12,
Version2010 = 14
}
输出:
Version2007 Version2010 2007
如果您定义以下内容,您认为会发生什么:
public enum SelectVersionEnum
{
12 = 14,
14 = 16
}
字符串“14”现在是“12”还是“14”?
答案 2 :(得分:3)
不,枚举标识符不能以数字字符开头。
答案 3 :(得分:2)
您可以像任何其他类型一样为枚举添加扩展方法。
因此,您可以为SelectVersionEnum创建一个扩展名,以帮助您以正确的格式获取枚举值...
public static class SelectVersionEnumExtension
{
public static int Version(this SelectVersionEnum enumValue)
{
return 0; // Obviously you should return something meaningful here..
}
}
这为您提供了很多灵活性。
答案 4 :(得分:1)
您可以使用与enum关联的数值的一种方法是使用description属性。例如,你可能有枚举:
[Serializable]
public enum SelectVersionEnum
{
[Description("2007")]
v2007,
[Description("2010")]
v2010
}
然后,您可以编写扩展方法来获取您要查找的数值。
public static string Description(this Enum value)
{
var type = value.GetType();
var name = Enum.GetName(type, value);
if (name != null)
{
if (type.GetField(name) != null)
{
var attr = Attribute.GetCustomAttribute(type.GetField(name), typeof(DescriptionAttribute)) as DescriptionAttribute;
return attr != null ? attr.Description : name;
}
}
return null;
} // end
您可以这样使用它:
var version = SelectVersionEnum.v2007.Description();