c#中enum用法,c++中enum

  c#中enum用法,c++中enum

  Enum是枚举类型。和struct、int、single、double一样,属于ValueType,从valuetype派生出来,存储在堆栈中。当它被创建时,它不需要分配内部空间,所以它对程序的性能有好处。

  为什么要引入enum?一个原因是为了让程序更安全,增加程序的可读性,提高开发效率。

  什么时候用?当我们确定了变化的数量和作用后,就可以把变化一个一个的列举出来,然后用enum。

  比如有一个图表,可以用三种类型显示,分别是折线图、条形图和饼图。用户可以指定显示方式。这时候我们可以通过变量或者更安全类型的枚举来控制。看啊。

  命名空间常量

  公共类系统常数

  公共常量。Webinfo图表类型{ get设置;}

  公共字符串结果;

  公共字符串Create()

  图表类型=常量。Webinfo . Pie

  开关(图表类型)

  案例常量。网页信息栏:

  Result= bar

  //代码语句

  //.

  //.

  打破;

  案例常量。网络信息行:

  Result= line

  打破;

  案例常量。Webinfo.Pie:

  Result= pie

  打破;

  返回结果;

  公共枚举Webinfo

  饼形、条形、线形

  }

  看,红色的地方是我的枚举。调用时,使用常数。Webinfo.Bar,常量。Webinfo.Line或常量。Webinfo.Pie来调用。类型更安全,不会有错别字。

  标志枚举的高级用法:

  中标志枚举的使用

  问题1

  从指定的枚举中移除元素和添加元素,并确定元素集中是否存在元素:

  看看代码:

  订单状态枚举=订单状态。客户取消订单状态。客户订单订单状态。CustomerQuery//必须是具体的枚举类型,不能直接写枚举类型。

  ^订单状态。客户已取消;//第一种方法,如果集合中有这个元素,则将其移除,如果没有,则将其添加到集合中。

  enums=enums (~OrderState。show border);//第二个方法,移除一个元素

  enums=enums OrderState。客户已订购;//将元素添加到枚举列表中

  bool hasFlag=((枚举OrderState。客户取消)!=0);//确定指定的枚举元素是否存在于枚举列表中。

  控制台。WriteLine(has flag);

  问题2:我们将复合枚举集作为int类型存储在数据库中,然后如何将这个int类型值转换成枚举组合?

  看看代码:

  [旗帜]

  公共枚举角色

  admini=1,

  用户=2,

  备份=4,

  guest=8,

  role enum S2=role . admini role . user role . backup;

  enum S2=enum S2 role . guest;//添加元素

  enum S2=enum S2 ^ role . guest;//移除元素

  控制台。WriteLine((int)enum S2)。ToString());//输出包含的枚举元素的值的总和

  int sum=(int)enum S2)//结果是7

  //结果RoleSum,method 1,bool aa=enum S2 . has flag(rolename . employee)中是否包含枚举值Role.admin//查看指定的元素

  方法二:

  if(((角色)枚举。Parse(typeof(Role),RoleSum。ToString()) Role.admin)!=0)//if((Role)Enum。Parse(typeof(Role),RoleSum。ToString())role . admin)==role . admin)

  控制台。WriteLine(“包含它”);

  其他

  控制台。WriteLine(“不包括它”);

  方法三:

  [旗帜]

  公共枚举enumstatus

  男=1,

  女性=2,

  都=4,

  enumstatus es

  es=enum status . male enum status . female;

  if ( (es enumstatus.both)!=0)

  控制台。WriteLine( include it s。ToString());

  其他

  控制台。WriteLine(“不包括它”);

  }

  问题3如果向枚举集合中添加元素会怎样?我的意思是给一个空的枚举对象添加元素!

  role enum S2=role . admini role . user role . backup;//方法一,这是一个静态赋值

  Role enum S2=new Role();//方法二,这是先定义一个枚举对象,然后动态的给它添加值。

  enum S2=enum S2 role . admini;//也可以这样添加。

  enums2 =Role.backup//也可以这样添加。

  enums2 =Role.user

  问题4:如何将枚举集合转换成字符串数组对象并输出?

  ///摘要

  ///要验证的字符串数组枚举集合

  ////摘要

  RoleName enums2=RoleName。管理员角色名。Boss RoleName。HR RoleName。DeptMgr//为角色分配多个值

  string[]enum names=null;

  enumNames=Regex。Split(enums2。ToString(),,);

  if (enumNames。长度1)

  {

  新异常(“枚举太少!”);

  }

  其他

  {

  foreach(枚举名称中的变量名称)

  {

  控制台。WriteLine(名称);

  }

  }

  标志枚举的一些解释

  中的枚举。NET通常有两种用法。一种是表示一个独特的元素序列,比如一周中的每一天;它也用于表示各种复合状态。此时,一般需要用[Flags]将枚举标记为位域,例如:

  [flags] enumstyles {showborder=1,//是否显示边框ShowCaption=2,//是否显示标题ShowToolbox=4 //是否显示工具箱}

  这样,我们可以用“or”运算符组合多个状态,例如:

  我的控制。风格=风格。显示边框样式。显示标题;

  此时,myControl的值。样式枚举将变为1 ^ 2=3,其ToString()将变为“styles.showborder,styles.showcaption”。

  这里我们可以解释为什么第三个值ShowToolbox可以是4,5.而不是3。也就是说,它的值不应该是前面值的合成值。有一个简单的方法,用2的n次方依次给每一项赋值,比如1,2,4,8,16,32,64。

  现在,让我们看一个常见的Flags应用程序示例。例如,一个简单的权限系统有两个角色:“管理员”和“用户”。我们可以在表中放置一个varchar()字段,以文本形式存储权限词“Admin,User”。但是有了标志枚举,我们可以直接把角色的值。管理员角色。int字段中的用户。

  以下是一些关于枚举的常见操作:

  将枚举的值改回枚举对象:

  样式style=(Styles)枚举。Parse(typeof(Styles),“4”);//- style=样式。工具箱;

  检查枚举是否包含元素:

  bool hasFlag=((style样式。ShowBorder)!=0);

  事实上,我们会遇到这样的情况,我们需要从组合状态中移除一个元素。您可以使用“”运算符来完成此操作:

  样式样式=样式。显示边框样式。显示标题;^风格。ShowBorder

  这个时候,风格的价值就变成了风格。显示标题

  但是这里有一个严重的问题(我现在才发现)。

  这次我们会再做一次。

  ^风格。ShowBorder

  按照我们的假设,此时风格的价值就是风格。ShowCaption,它不包含样式。因此,即使我们删除了这个元素,样式仍然应该保持不变。但是实际的样式值已经改成了styles . show border styles . show caption!再执行一次,这个元素又会被去掉,周而复始。

  当然,我们可以在移除一个元素之前进行检查。如果枚举包含此元素,请再次移除它:

  if((样式样式。ShowBorder)!=0){ style=style ^样式。ShowBorder}

  我想知道是否有其他方法可以方便地从Flags枚举状态中移除一个元素。

  感谢mobilebilly:

  Style=style (~Styles。ShowBorder)可以方便地删除元素。

  善用枚举

  这几天我手里有一个关于订单的项目。订单通常有状态。以前我习惯只想到几种订单,我就直接写下来。很浪费资源,但是写下一个数字来代表一个订单状态也很浪费资源,所以我要记住数字代码是什么,编码的时候是什么状态。如果我不小心写错了,就会导致数据错误。

  后来,我觉得。NET有一个枚举。这么好的东西为什么不用?这样不仅方便了以后的代码维护,也方便了编码。

  公共枚举订单状态

  /**////摘要

  ///无效状态

  ////摘要

  无效=0,

  /**////摘要

  ///客户查询

  ////摘要

  客户查询=1,

  /**////摘要

  ///客户一个人。

  ////摘要

  客户订单=2,

  /**////摘要

  ///客户付费

  ////摘要

  ReceiverCustomerPayment=4,

  /**////摘要

  ///从供应商处订购

  ////摘要

  供应商排序=8,

  /**////摘要

  ///供应商确认交货日期

  ////摘要

  SupplierOrderTerm=16,

  /**////摘要

  ///收到货品

  ////摘要

  RecieverGoods=32,

  /**////摘要

  ///客户取消订单

  ////摘要

  CustomerCanceled=64,

  /**////摘要

  ///供货商取消订单

  ////摘要

  SupplierCancelded=128

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • enum定义枚举类型,对枚举类型名的定义enum a{sum=9}
  • enum定义枚举类型,对枚举类型名的定义enum a{sum=9},全面解读Java中的枚举类型enum的使用
  • enum定义枚举类型,java中的枚举类型的使用
  • enum定义枚举类型,java中的枚举类型的使用,Java枚举类型enum的详解及使用
  • python中的range是什么意思,python enumerate()
  • 枚举类型enum用法,枚举法
  • java枚举类型使用,Java enum类
  • java枚举类型使用,java的enum用法
  • java枚举类型enum赋值,枚举类型enum
  • enum在java中是什么类型,javaenum使用实例
  • java中enum什么意思,java enums
  • pythonenumerate用法总结,python中的enumerate是什么意思
  • Python中如何使用count,Python中如何使用enumerate_1
  • pythonenumerate用法总结,pythonenumerate()函数
  • python中enumerate函数是什么意思,python中enumerate什么意思
  • 留言与评论(共有 条评论)
       
    验证码: