c#枚举简介

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

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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值