c#枚举简介

来源:互联网 发布:易订货源码 编辑:程序博客网 时间:2024/05/03 15:42


本文在下面博文基础上修改了些。谢谢原作者。

http://www.cnblogs.com/athens/archive/2012/09/05/2671935.html

1. 枚举定义
普通情况下,枚举字段常数可以是汉字,英文,但不能是数字。当不指定值时,默认值从0开始,如下:待处理=0,审核中=1

public enum Status
    {       
        待处理,
        审核中,
        交易终止,
        交易完成
    }


当需要自定义值时则直接在后面赋值即可

public enum Status
    {       
        待处理 = 0,
        审核中 = 10,
        交易终止 = 20,
        交易完成 = 99
    }


定义枚举Description

public enum Status
    {
        [Description("未审核")]
        Untreated = 0,
        [Description("审核中")]
        Process = 10,
        [Description("交易终止")]
        Cancel = 20,
        [Description("交易完成")]
        Over= 99
    }



2.枚举取值

  通过枚举类型,常量名称取key

Status.待处理


/// <summary>
        /// 得到指定枚举中指定值的常量名称
        /// </summary>
        /// <param name="typeEnum"></param>
        /// <param name="intValue"></param>
        /// <returns></returns>
        public static string GetEnumKeyFromValue(Type typeEnum, int intValue)
        {
            return Enum.GetName(typeEnum, intValue);
        }


/// <summary>
        /// 返回指定值的中文描述,如果没有描述,则返回指定值得变量名
        /// </summary>
        /// <param name="typeEnum"></param>
        /// <param name="intKey"></param>
        /// <returns></returns>
        public static string GetEnumDescription(Type typeEnum, int intKey)
        {
            FieldInfo objFI = typeEnum.GetField(Enum.GetName(typeEnum, intKey));
            DescriptionAttribute[] attributes = (DescriptionAttribute[])objFI.GetCustomAttributes(typeof(DescriptionAttribute), false);
            if(attributes.Length > 0)
            {
                return attributes[0].Description;
            }
            return GetEnumKeyFromValue(typeEnum, intKey);
        }
       
        /// <summary>
        /// 将指定枚举绑定到某个List控件中,可以是Dropdownlist也可以是radiobuttonlist
        /// </summary>
        /// <param name="objLC">控件名称</param>
        /// <param name="typeEnum">指定枚举的类型</param>
        public static void SetListFromEnum(ListControl objLC, Type typeEnum)
        {
            ArrayList objAL = new ArrayList();
            ListItem objLI;
            string strText = "";
            string strValue = "";
            foreach(int i in Enum.GetValues(typeEnum))
            {
                //strText = Enum.GetName(typeof(enumPurviews), i);
                strText = GetEnumDescription(typeEnum,i);
                strValue = i.ToString();               
                objLI = new ListItem(strText, strValue);
                objAL.Add(objLI);
            }

            objLC.DataSource = objAL;
            objLC.DataTextField = "text";
            objLC.DataValueField = "value";
            objLC.DataBind();
        }
       
       
        /// <summary>
        /// 浏览相册所需权限的枚举类型
        /// </summary>
        public enum enumPurviews
        {
            /// <summary>
            /// 所有人可见
            /// </summary>
            [Description("所有人可见")]
            All = 1,

            /// <summary>
            /// 仅本人可见
            /// </summary>
            [Description("仅本人可见")]
            OnlyMe = 2,

            /// <summary>
            /// 仅本人和主编可见
            /// </summary>
            [Description("仅本人和主编可见")]
            OnlyMeAndEditor = 3
        }
       
       
        前台:
       
        // 绑定浏览相册所需权限RadioButtonList
        protected void BindDDLPurviews()
        {
            Type typeEnum = typeof(HelperEnum.enumPurviews);
            HelperEnum.SetListFromEnum(rblPurviews, typeEnum);
        }

0 0