Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
枚举中的数值常量(c#)_C#_Enums_Constants_Numeric - Fatal编程技术网

枚举中的数值常量(c#)

枚举中的数值常量(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

我正在SharePoint web部件中创建此选择框,需要具有当前版本的下拉列表,因此我需要使用枚举

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。