枚举中的数值常量(c#)
我正在SharePoint web部件中创建此选择框,需要具有当前版本的下拉列表,因此我需要使用枚举枚举中的数值常量(c#),c#,enums,constants,numeric,C#,Enums,Constants,Numeric,我正在SharePoint web部件中创建此选择框,需要具有当前版本的下拉列表,因此我需要使用枚举 public enum SelectVersionEnum { 2010, 2007 }; 你可以看到它在哪里断开,有没有办法在枚举中使用整数? 最重要的是我想用 public enum SelectVersionEnum { 2010=14, 2007=12 }; 枚举成员必须是有效的C#标识符。 他们不能从数字开始 相反,您可以使用类似于Office2007、Office2010或V20
public enum SelectVersionEnum { 2010, 2007 };
你可以看到它在哪里断开,有没有办法在枚举中使用整数?
最重要的是我想用
public enum SelectVersionEnum { 2010=14, 2007=12 };
枚举成员必须是有效的C#标识符。
他们不能从数字开始
相反,您可以使用类似于
Office2007、Office2010
或V2007、V2010
枚举成员必须是有效的C标识符。他们不能从数字开始
相反,您可以使用类似于
Office2007、Office2010
或V2007、V2010
否,枚举标识符不能以数字字符开头。否,枚举标识符不能以数字字符开头。否,不能以整数名称命名枚举
枚举值名称是普通标识符,必须遵循与其他所有名称相同的规则
但是,您可以使用:
public enum SelectVersionEnum
{
Version2007 = 12,
Version2010 = 14
}
此外,即使字符串中描述的值不存在,也可以将带有整数的字符串解析为相应的枚举值
在中尝试以下操作:
输出:
Version2007
Version2010
2007
字符串“14”现在是指“12”还是“14”?否,不能使用整数名称命名枚举 枚举值名称是普通标识符,必须遵循与其他所有名称相同的规则 但是,您可以使用:
public enum SelectVersionEnum
{
Version2007 = 12,
Version2010 = 14
}
此外,即使字符串中描述的值不存在,也可以将带有整数的字符串解析为相应的枚举值
在中尝试以下操作:
输出:
Version2007
Version2010
2007
字符串“14”现在是指“12”还是“14”?您可以像任何其他类型一样向枚举添加扩展方法 因此,您可以为SelectVersionEnum创建扩展,以帮助您以正确的格式获取枚举值
public static class SelectVersionEnumExtension
{
public static int Version(this SelectVersionEnum enumValue)
{
return 0; // Obviously you should return something meaningful here..
}
}
这给了您很大的灵活性。您可以像其他类型一样向枚举添加扩展方法 因此,您可以为SelectVersionEnum创建扩展,以帮助您以正确的格式获取枚举值
public static class SelectVersionEnumExtension
{
public static int Version(this SelectVersionEnum enumValue)
{
return 0; // Obviously you should return something meaningful here..
}
}
这给了您很大的灵活性。一种使数值与枚举关联的方法是使用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();
使数值与枚举关联的一种方法是使用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();
下面的答案是正确的。花点时间考虑一下,即使C允许这样做,这也是一个非常糟糕的想法和一个维护噩梦。这类代码最终将发布到每日WTF。下面的答案是正确的。花点时间考虑一下,即使C允许这样做,这也是一个非常糟糕的想法和一个维护噩梦。这类代码最终将发布到每日WTF。