C#编程(六)------------枚举
原文链接: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#编程(六)------------枚举的更多相关文章
- Swift中文教程(六)--枚举和结构
原文:Swift中文教程(六)--枚举和结构 Enumerations 枚举 使用 enum 来创建一个枚举.跟Classes(类)和其他类型的命名方式一样,枚举也可以有Method(方法). enu ...
- JDBC编程六部曲
今天初学jdbc,明白了大致的编程流程,在此总结一下: JDBC编程可以分为六步——六部曲: * 第一步:注册驱动. * 1.1 获取驱动对象 * 1.2 注册驱动 * 第二步:获取数据库连接 * 第 ...
- HTTP编程(六)
此为网络编程的一个系列,后续会把内容补上.....
- java编程思想-枚举类型思维导图
- Linux网络编程(六)
网络编程中,使用多路IO复用的典型场合: 1.当客户处理多个描述字时(交互式输入以及网络接口),必须使用IO复用. 2.一个客户同时处理多个套接口. 3.一个tcp服务程序既要处理监听套接口,又要处理 ...
- 【Java并发编程六】线程池
一.概述 在执行并发任务时,我们可以把任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程,只要池里有空闲的线程,任务就会分配一个线程执行.在线程池的内部,任务被插入一个阻塞队列(Blo ...
- C++面向对象高级编程(六)转换函数与non-explicit one argument ctor
技术在于交流.沟通,转载请注明出处并保持作品的完整性. 1.conversion function 转换函数 //1.转换函数 //conversion function //只要你认为合理 你可以任 ...
- C#高级编程六十九天----DLR简介 .在.NET中使用DLR(转载) 我也来说说Dynamic
DLR 一.近年来,在TIOBE公司每个月发布的编程语言排行榜中,C#总是能挤进前十名,而在最近十年来,C#总体上呈现上升的趋势.C#能取得这样的成绩,有很多因素,其中它在语言特性上的锐意进取让人印象 ...
- Java基础(六)--枚举Enum
枚举: 刚开始项目中没怎么用过,只知道能够实现作为项目中类似定义Constant的功能,然后知道枚举实现的单例模式几乎是最优雅的,所以, 想要深入完整的了解一下 1.基本特性: Enum.values ...
- linux高性能服务器编程 (六) --高级I/O函数
第六章 高级I/O函数 Linux提供了很多高级的I/O函数,它不是基础的I/O函数(open/read) 1.创建文件描述符的函数比如:pipe.dup/dup2函数 2.读写数据的函数比如:rea ...
随机推荐
- JavaScript中构造函数
构造函数:函数的另一种执行方法,执行后创建对象,并创建原型对象. 原型链:对象访问构造函数的指针. Function函数:函数对象. Object函数:所有创建对象的祖辈对象,也是由Function对 ...
- CF 576A 猜数
A给出一个数x,B每次猜一个y,A回答B,x是否可以被y整除,求出要猜的最小次数和需要猜的数. 枚举每个素数p,可以知道如果p^k<=n,则p^k一定需要选 Sample test(s)inpu ...
- rocketmq在linux上安装
1.下载bin压缩包,然后解压 官网下载地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2- ...
- Spark(十三)SparkSQL的自定义函数UDF与开窗函数
一 自定义函数UDF 在Spark中,也支持Hive中的自定义函数.自定义函数大致可以分为三种: UDF(User-Defined-Function),即最基本的自定义函数,类似to_char,to_ ...
- jenkins定时构建
打开job的配置界面,在构建触发器栏下有Poll SCM(定时检查源码变更并构建)和Build periodically(周期进行项目构建,不关心源码是否变更) 定时构建语法: * * * * *(和 ...
- Dubbo中多注册中心问题与服务分组
一:注册中心 1.场景 Dubbo 支持同一服务向多注册中心同时注册, 或者不同服务分别注册到不同的注册中心上去, 甚至可以同时引用注册在不同注册中心上的同名服务. 2.多注册中心注册 中文站有些服务 ...
- poj1979 Red And Black(DFS)
题目链接 http://poj.org/problem?id=1979 思路 floodfill问题,使用dfs解决 代码 #include <iostream> #include < ...
- (转)python的range()函数用法
使用python的人都知道range()函数很方便,今天再用到他的时候发现了很多以前看到过但是忘记的细节.这里记录一下range(),复习下list的slide,最后分析一个好玩儿的冒泡程序. 转自: ...
- 【定时任务】Timer
Java原生api Timer类就可以实现简单的定时任务.下面将简单介绍一下Timer. 一.使用 Timer 实现定时任务 具体代码如下. 可以看到我们主要是分三步进行的 1.new Timer() ...
- 使用IDEA运行Eclipse编辑jetty运行的J2EE项目的惨痛教训
公司的项目原本是使用Eclipse,使用自带的jetty运行, 用IDEA通过git clone后,使用Tomcat运行,可以运行,却无法访问页面,总是报错404 后来使用IDEA Jetty运行,经 ...