本文简单分析了.NET中的枚举用法。分享给大家供大家参考。具体分析如下:

我理解的枚举就是编程中约定的一个“可选值”;例如QQ的在线状态,分别有    在线,Q我吧,隐身,忙碌等等。。。我觉得这就是一个枚举。

1.普通枚举

1) 实例

public enum UserState
{
 QMe,
 OnLine,
 OffLine     //后面省略
}

ps:像上边的枚举,可以单独写在一个CS文件中。

2)普通枚举的性质

1. 互斥性

2. 每一个值都有一个数值来表示

3. 枚举在编译时,就已经用数值来表示了。

3)字符串转换成枚举

(UserState)Enum.Parse(typeof(UserState),"Red") ;

 

将字符串型转化为(Enum)枚举类型。

例如:现在有个字符串sString,一个枚举EnumName,希望把sString类型转换成EnumName类型格式如下:

(EnumName)EnumName.Parse(typeof(EnumName),sString)

实例:有一个下拉式列表,通过选择某项,将选择的SelectedValue转变成枚举类型

<asp:DropDownList ID="ddlStatus" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlStatus_SelectedIndexChanged">
                                    <asp:ListItem Value="1" Selected="True">保密</asp:ListItem> 
                                    <asp:ListItem Value="2">男</asp:ListItem>
                                    <asp:ListItem Value="3">女</asp:ListItem>
                                </asp:DropDownList>

枚举类型:public enum Sex{ 保密= 1, 男 = 2, 女 = 3 };

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class EnumTest : System.Web.UI.Page
{
        public enum Sex { 保密=1,男=2,女=3}
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void ddlSex_SelectedIndexChanged(object sender, EventArgs e)
        {
            Response.Write((Sex)Enum.Parse(typeof(Sex), ddlSex.SelectedValue));
            lblMeg.Text = "ddlSex.SelectedValue的值为:" + ddlSex.SelectedValue.ToString()+"/n";
            lblMeg.Text += Convert.ToString(Enum.Parse(typeof(Sex), ddlSex.SelectedValue));
        }
}

Result:下拉式ddlSex.SelectedValue的值为1时,显示保密。

4)枚举转换成数值、字符串

(int)myColor.Red;
myColor.Red.ToString();

2.标识枚举

但一个事物具有多个属性时,普通枚举就不够用了。

普通枚举是互斥的,标识而枚举是可以组合的。

1)定义

//使用以后结果是Tostring()的,而不是数字的。

 

public enum GoodMan
{
   高=1,
   富=2,
   帅=4     //这里必须是2的N次方,切不能重复。
}

2)状态组合(或运算)

GoodMan winter = GoodMan.高| GoodMan.富| GoodMan.帅;

3)判定winter中是否具有某个枚举值(与运算)

if(winter&GoodMan.高==GoodMan.高)