本文简单分析了.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.高)

.NET中的枚举用法浅析的更多相关文章

  1. Scala进阶之路-Scala中的枚举用法案例展示

    Scala进阶之路-Scala中的枚举用法案例展示 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Scala中的枚举值和Java中的枚举值有点差别,不过使用起来也都差大同小异,我这 ...

  2. 浅谈在Java开发中的枚举的作用和用法

    枚举(enum),是指一个经过排序的.被打包成一个单一实体的项列表.一个枚举的实例可以使用枚举项列表中任意单一项的值.枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色.方式.类别.状态等等数目 ...

  3. Python中int()函数的用法浅析

      int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int)  Help on class int in module __builti ...

  4. Python 中的枚举类型~转

    Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...

  5. 项目中Enum枚举的使用

    在.NET中,枚举一般有两种常见用法,一是表示唯一的元素序列,比如表示订单状态(未提交,待处理,处理中...).另外一种是表示多种组合的状态,比如表示权限,因为可同时有多个不同权限. 基本用法 这里拿 ...

  6. Java中Enum枚举的使用

    三种不同的用法 注意项: 1.在switch中使用枚举能使代码的可读性更强.   2.如果要自定义方法,那么必须在enum实例序列的最后添加分号.而且Java要求必须先定义enum实例.   3.所有 ...

  7. ViewSwitcher用法浅析

    如果理解了ViewPager的使用方法,使用ViewSwitcher就方便多了.和ViewFlipper一样,ViewSwitcher也是ViewAnimator的子类,并且只能包含两个子视图,每次展 ...

  8. c#中[Flags] 枚举类型定义问题_百度知道

    [Flags]的微软解释是“指示可以将枚举作为位域(即一组标志)处理.”其实就是在编写枚举类型时,上面附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&”操作了 ...

  9. 在Android中使用枚举注解而不是枚举

    Enums often require more than twice as much memory as static constants. You should strictly avoid us ...

随机推荐

  1. 学习EF之CodeFirst二(数据库对应映射)

    在上一篇文章我们简单通过一个实例完成对CodeFirst的理解,我们通过实体生成数据库里的表和字段,虽然有一些默认的配置生成规定,但其实我们可以能过对实体进一步控制从而对生成的表字段进行更加符合我们要 ...

  2. lshw-查看系统硬件信息

    lshw是系统日常使用会比较常用到的命令,一般是用它来查看新硬件的信息. 跟觉man,lshw会读取的文件有: /usr/local/share/pci.ids /usr/share/pci.ids ...

  3. Protocol Informatics (PI项目)【基于网络轨迹的协议逆向工程文献学习】

    Protocol Informatics[基于网络轨迹的协议逆向工程文献学习]by tsy 声明: 1)本报告由博客园bitpeach撰写,版权所有,免费转载,请注明出处,并请勿作商业用途.恕作者著作 ...

  4. 排序(2)---------简单插入排序(C语言实现)

    插入排序(Insertion Sort)的算法描写叙述是一种简单直观的排序算法. 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到对应位置并插入.插入排序在实现上,通常 ...

  5. VB.NET与 sql数据库

    数据蕴含丰富的信息,数据就是资源. 不同的语言,因为各自的语法特点.对sql数据库的连接操作有些小差别.但有一点,那就是.对sql数据库的操作语句sql语句大体是一样的. 这段时间正进行VB.NET的 ...

  6. 【服务器时间修改为东八区】包括Apache2和mysql

    1.服务器Apache时间修改,可通过修改php.ini进行修改 所以就深入了解了一下, 发现Apache(PHP)的服务器时间时区默认为UTC(Coordinated UniversalTime 世 ...

  7. IOS后台文件上传

    public ModelAndView GetImage(HttpServletRequest request,   HttpServletResponse response) throws Exce ...

  8. List分组迭代器 C#--深入理解类型

    List分组迭代器   说明: 针对长度较大的List对象,可以分组批量进行处理, 如:长度为1000的List对象,可分为10组,每组100条,对数据进行业务逻辑处理... Source /**** ...

  9. NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败

    众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...

  10. iperf使用

    1. sourceforge搜索iperf下载 2. ./configure make make install 3. server:iperf -s -p 12345 -i 1 -M: client ...