.Net枚举类型小结
(1)类型声明语法: enum 枚举名
(2)枚举体语法: a.成员名称 = 整数值,其他成员名称,或者其他成员与整数的表达式 b.成员之间需要用逗号隔开
(3)枚举可以继承的类型:byte、sbyte、short、ushort、int、uint、long 或 ulong
(4)枚举多个成员可以共享一个值
(5)枚举的默认值规则:第一成员没有显示设定值,那么其默认值是0,后面的项依次加1;如果后面的某个成员设定了值,那么这个值后面的成员是他的值后面依次加1
(6)获得枚举成员的字符串值:方法1:枚举.成员.ToString() 方法2:Enum.GetName() 方法:Enum.GetValues
(7)获得枚举成员的整数值:强制转化枚举成员,即:(int)枚举.成员
(8)枚举一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。这个时候一般需要为枚举加上[Flags]特性标记为位域.
(9)组合多个枚举状态的方法:或运算,枚举成员 | 枚举成员;从组合状态中去掉一个元素的方法,用"^"运算符可以做到,枚举变量 ^ 枚举变量的一个成员
2.枚举类型的优点:Enums是在栈中而不是堆中建立起来的数值类型,这样运行的程序需要更少的处理器和内存的资源,你无需使用new来建立一个Enum类型。
3.Demo:
1: class Program
2: {
3: public enum Test : int //正确
4: {
5: ok=10000,
6: no=20000
7: }
8: //public enum Test3 : string//错误,枚举能够继承的类型:byte、sbyte、short、ushort、int、uint、long 或 ulong
9: //{
10: // ok=10000,
11: // no=20000
12: //}
13: //public enum Test2 : byte//错误,超出byte的范围
14: //{
15: // ok=10000,
16: // no=20000
17: //}
18: //public enum Test5 : Test//错误,不允许整数以外类型继承
19: //{
20: // ok=10000,
21: // no=20000
22: //}
23: [Flags]
24: public enum Test4
25: {
26: ok,//无值的话,第一个成员默认是0
27: no,//值默认为1
28: yes=100,
29: yesyes,//值为101
30: nono=yesyes+100,
31: okok=yes+yes,
32: ook = ok//多个成员可以共享一个值
33: }
34: static void Main(string[] args)
35: {
36: Console.WriteLine((int)Test4.ok);//获得枚举名称的整数值只需强制转换即可
37: string str = Test4.ok.ToString();//获得枚举的名称字符串,使用ToString()
38: Console.WriteLine(str);
39: Console.WriteLine(Enum.GetName(typeof(Test4),0));
40: Console.WriteLine("*****Enum类方法***************************");
41: foreach (var item in Enum.GetValues(typeof(Test4)))
42: {
43: Console.WriteLine(item);
44: Console.WriteLine((int)item);
45: }
46: Console.WriteLine("*****Flags特性*********************************************");
47: Test4 tt = Test4.no | Test4.yes;//组合2个成员
48: Console.WriteLine(tt);//如果有Flags属性,值为:no,yes,没有Flag属性,值为:yesyes
49: Console.WriteLine((int)tt);//值为二者之和 101=100+1
50: tt = tt ^ Test4.yes;//去掉组合中的一个成员
51: Console.WriteLine(tt);
52: Console.WriteLine((int)tt);//值为1
53: Console.ReadKey();
54: }
55: }
图一:有Flags属性 图二:无Flags属性
4.参考资料:
http://www.west263.com/www/info/21458-1.htm
http://www.cnblogs.com/BillySir/archive/2012/02/15/2353395.html
http://www.189works.com/article-48463-1.html
http://gaoling386.blog.163.com/blog/static/54046024201261793458830/
http://blog.csdn.net/aoyux/article/details/173451
http://kb.cnblogs.com/page/42561/
.Net枚举类型小结的更多相关文章
- Java魔法堂:枚举类型详解
一.前言 Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息. // C# enum MyColor{ RED = , BLUE = } Console.Write ...
- Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件
在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
- 第三条:用私有构造器或者枚举类型强化Singleton属性
1.使用单元素的枚举类型 public enum Singleton implements Serializable { INSTANCE; private String field; public ...
- 在WPF中使用变通方法实现枚举类型的XAML绑定
问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...
- 窥探Swift之别样的枚举类型
想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...
- C#枚举类型的常用操作总结
枚举类型是定义了一组"符号名称/值"配对.枚举类型是强类型的.每个枚举类型都是从system.Enum派生,又从system.ValueType派生,而system.ValueTy ...
- TypeScript中的枚举类型
TypeScript拓展了Javascript原生的标准数据类型集,增加了枚举类型(enmu)和其他语言一 样 它提供我们一种数字类型的值,用来设置由于辨别的名字和方法 enum Students { ...
- Python 中的枚举类型~转
Python 中的枚举类型 摘要: 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表示某些特定的有限集合,例如星期.月份.状态等. 枚举类型可以看作是一种标签或是一系列常量的集合,通常用于表 ...
随机推荐
- 【转】Ofbiz学习经验谈
不可否认,OFBiz这个开源的系统功能是非常强大的,涉及到的东西太多了,其实对我们现在而言,最有用的只有这么几个:实体引擎.服务引擎.WebTools.用户权限管理.最先要提醒各位的是,在配置一个OF ...
- [King.yue]Ext.Net 正则表达式用法
例: .Regex("^[A-Za-z0-9]+$") //正则表达式 .InvalidText("只能输入英文字符和数字.")); //输入错误提示
- 在eclipse.ini中指定jdk的方式
在eclisep的安装目录,打开eclipse.ini文件,加上这么一行,如下红色所示,注意加在-Vmargs前面,这两种方式的区别是:第二种方式除了会有eclipse进程外还会启动个java进程. ...
- 《Python CookBook2》 第一章 文本 - 检查字符串中是否包含某字符集合中的字符 && 简化字符串的translate方法的使用
检查字符串中是否包含某字符集合中的字符 任务: 检查字符串中是否出现了某个字符集合中的字符 解决方案: 方案一: import itertools def containAny(seq,aset): ...
- javascript 继承、命名空间实现分享
命名空间是用来组织和重用代码的编译单元,在大型项目开发中javascript使用的越来越多时,我们就应该将项目里的js类库管理起来,如何将自己进行归类管理,防止命名冲突,但是Javascript默认不 ...
- MDI端口和MDIX端口是什么? 又有什么作用?
是网线的标准A类接法和B类接法.也就是人们通常所说的交叉网线和直联网线.直联网线就是 白黄 黄 白绿 蓝 白兰 绿 白棕 棕 另一端同样如此.交叉网线就是 另一端的1和3,2和6对调.这样就成了交叉网 ...
- PHP中的替代语法
今天看了一下wordpress的代码,里面有些少见的php替代语法, <?php else : ?> <div class="entry-content"> ...
- MLE MAP EM
1.最大似然估计 (MLE): 什么是最大似然估计? 问题:给定一组观察数据还有一个参数待定的模型,如何来估计这个未知参数呢? 观察数据(x1,y1)......(xn,yn) 待定模型 ...
- J2EE到底是什么
目前所有的B/S系统应用可以分为:有状态(statefull)和无状态(stateless)两大类别. 有状态是指在整个系统的处理过程中要保留记住一些信息,而无状态则相反,每次request都是独立的 ...
- 提高iOS开发效率的方法和工具
http://www.cocoachina.com/ios/20150717/12626.html 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先 ...