原文链接:http://blog.csdn.net/shanyongxu/article/details/46423255

枚举

定义枚举用到的关键字:enum

public enum TimeOfDay

{

Monring = 0,

Afternoon = 1,

Evening = 2

}

static void Main(string[] args)

{

int x=(int)TimeOfDay.Afternoon;

Console.WriteLine(x);

Console.ReadKey();

}

创建枚举的优点:

1.是代码易于维护,因为确保给变量指定合法的,期望的值.

2.代码清晰,允许用描述性的名称拜师整数值,而不是含义模糊,变化多端的数来表示.

3.易于键入(通过使用.符号)

本例中TimeOfDay.Afternoon返回数字1.使用美剧一般和合适的值传递给方法,并在switch语句中迭代可能的值.

public enum TimeOfDay

{

Monring = 0,

Afternoon = 1,

Evening = 2

}

static void Main(string[] args)

{

WriteGreeting(TimeOfDay.Afternoon);

Console.ReadKey();

}

static void WriteGreeting(TimeOfDay timeOfDay)

{

switch (timeOfDay)

{

case TimeOfDay.Monring:

Console.WriteLine("good monring");

break;

case TimeOfDay.Afternoon:

Console.WriteLine("cood afternoon");

break;

case TimeOfDay.Evening:

Console.WriteLine("good evening");

break;

default:

break;

}

}

在C#中枚举的真正强大之处使他们在后台会实例化为派生于基类的System.Enum的结构.这表示可以对他们调用方法,执行有用的任务.一旦代码编译好,美剧就成为了进本类型,与int和float类似.

使用前面的例子获取美剧的字符串表示.

TimeOfDay time = TimeOfDay.Afternoon;

Console.WriteLine(time.ToString());

字符串类型转换为枚举类型

TimeOfDay time2 = (TimeOfDay)Enum.Parse(typeof(TimeOfDay), "afternoon", true);

Console.WriteLine((int)time2);

从字符串类型转化为枚举类型需要用到函数Enum.Parse(),这个方法需要三个参数,第一个是要转换的枚举累心,用关键字typeof包起来,第二个是要转换的字符串(一定是枚举中有的),第三个是否忽略大小写.

注意:枚举类型的基类型是除 Char 外的任何整型,所以枚举类型的值是整型值。什么意思呢?

看下例:

enum Colors{Red,Green,Blue,Yellow}//Red=0,Green=1,Blue=2,Yellow=3,默认从0开始,如果指定red=3,则从3开始

Enum-->string

利用Tostring()方法.

Colors color=Colors.Red;

strong str = color.ToString();

string-->Enum

利用Enum的静态方法Parse()

Colors color=(Colors)Enum.Parse(typeof(Colors),”red”,blue)

string str = color.ToString();

Console.WriteLine(str);

Console.ReadKey();

Enum-->int

直接使用强制转换

int blue=(int)Colors.Blue;

int-->Enum

调用方法

(1)可以强制转换将整型转换成枚举类型。

例如:Colors color = (Colors)2 ,那么color即为Colors.Blue

(2)利用Enum的静态方法ToObject。

public static Object ToObject(Type enumType,int value)

例如:Colors color = (Colors)Enum.ToObject(typeof(Colors), 2),那么color即为Colors.Blue

应该没有谁愿意用第二种办法吧,想装13的除外.

如果要判断某个整型是否定义在枚举中的方法:Enum.IsDefined.

Enum.Isdefined(typeof(Colors),number)

C#编程(六)------------枚举的更多相关文章

  1. Swift中文教程(六)--枚举和结构

    原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). enu ...

  2. JDBC编程六部曲

    今天初学jdbc,明白了大致的编程流程,在此总结一下: JDBC编程可以分为六步——六部曲: * 第一步:注册驱动. * 1.1 获取驱动对象 * 1.2 注册驱动 * 第二步:获取数据库连接 * 第 ...

  3. HTTP编程(六)

    此为网络编程的一个系列,后续会把内容补上.....

  4. java编程思想-枚举类型思维导图

  5. Linux网络编程(六)

    网络编程中,使用多路IO复用的典型场合: 1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用. 2.一个客户同时处理多个套接口. 3.一个tcp服务程序既要处理监听套接口,又要处理 ...

  6. 【Java并发编程六】线程池

    一.概述 在执行并发任务时,我们可以把任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程,只要池里有空闲的线程,任务就会分配一个线程执行.在线程池的内部,任务被插入一个阻塞队列(Blo ...

  7. C++面向对象高级编程(六)转换函数与non-explicit one argument ctor

    技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.conversion function 转换函数 //1.转换函数 //conversion function //只要你认为合理 你可以任 ...

  8. C#高级编程六十九天----DLR简介 .在.NET中使用DLR(转载) 我也来说说Dynamic

    DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...

  9. Java基础(六)--枚举Enum

    枚举: 刚开始项目中没怎么用过,只知道能够实现作为项目中类似定义Constant的功能,然后知道枚举实现的单例模式几乎是最优雅的,所以, 想要深入完整的了解一下 1.基本特性: Enum.values ...

  10. linux高性能服务器编程 (六) --高级I/O函数

    第六章 高级I/O函数 Linux提供了很多高级的I/O函数,它不是基础的I/O函数(open/read) 1.创建文件描述符的函数比如:pipe.dup/dup2函数 2.读写数据的函数比如:rea ...

随机推荐

  1. 用django-cors-headers做跨域

    什么是CORS? CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,可以让Ajax实现跨域访问. 其实,在服务器的response header ...

  2. **后台怎么处理JSON数据中含有双引号?

    http://bbs.csdn.net/topics/390578406?page=1 注意是后台,不是用js另外我这个json是直接取得别人的传过来的字符串,不是我自己拼写的,所以我自己不能做到转义 ...

  3. HDU - 4809 树形dp

    找了半天bug 发现把q打成了p... 思路:用dp[ i ][ j ][ k ] 表示在 i 这个点 这个点的状态为 j (0:不选 1:属于奇联通块 2:属于偶联通块) 且 奇联通块 - 偶联通块 ...

  4. Python 学习之list和Tuple类型

    1.创建list L = ['Adam', 95.5, 'Lisa', 85, 'Bart', 59] print(L) print(L[1],L[3],L[5])#索引 不能越界 正向访问 #95. ...

  5. poj2387- Til the Cows Come Home(最短路)

    此为转载:http://blog.csdn.net/wangjian8006: 题目大意:有N个点,给出从a点到b点的距离,当然a和b是互相可以抵达的,问从1到n的最短距离 解题思路: 模版题,这题要 ...

  6. HDU - 1022 Train Problem I STL 压栈

    Train Problem I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  7. Logan:美团点评的开源移动端基础日志库

    前言 Logan是美团点评集团移动端基础日志组件,这个名称是Log和An的组合,代表个体日志服务.同时Logan也是“金刚狼”大叔的名号,当然我们更希望这个产品能像金刚狼大叔一样犀利. Logan已经 ...

  8. 见微知著(一):解析ctf中的pwn--Fast bin里的UAF

    在网上关于ctf pwn的入门资料和writeup还是不少的,但是一些过渡的相关知识就比较少了,大部分赛棍都是在不断刷题中总结和进阶的.所以我觉得可以把学习过程中的遇到的一些问题和技巧总结成文,供大家 ...

  9. [转载] 你所不知道的TIME_WAIT和CLOSE_WAIT

    前言 本文转载自 https://mp.weixin.qq.com/s/FrEfx_Yvv0fkLG97dMSTqw.很久前看到Vincent Bernat在博客中写了一遍关于TCP time-wai ...

  10. H5 video标签视频加载存在的问题

    客户发现上传的视频无法播放,然后主管让我解决这个问题,这个页面不是我负责的,我看了代码,发现视频用的h5标签video标签加载视频.我看了没问题,然后 我先用ie浏览器打开,视频加载没问题.然后我给主 ...