c# 之Enum--枚举
枚举类型声明为一组相关的符号常数定义了一个类型名称。枚举用于“多项选择”场合,就是程序运行时从编译时已经设定的固定数目的“选择”中做出决定。
枚举类型(也称为枚举):该类型可以是除 char以外的任何整型(重点)。 枚举元素的默认基础类型为 int.准许使用的枚举类型有 byte、sbyte、short、ushort、int、uint、long 或 ulong。其作用就是规范代码,通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。
事例演示:enum语法
public enum QQState //枚举成员默认为Int32类型,也可以自己定义.冒号+整数类型除
{
OnLine = , //默认从0,也可以指定数值
OffLine, //数值按递增1的顺序.--2
Leave, //
Busy,
QMe //
}; //定义QQ在线状态的枚举,
enum、int、string之间的相互转换
//定义枚举变量
QQState enumVariable = QQState.OffLine; //枚举转字符串
string enumStringOne = enumVariable.ToString();//效率低,不推荐.==>OffLine
string enumStringTwo = Enum.GetName(typeof(QQState), enumVariable);//推荐==>OffLine enumVariable也可以换成数值 2 //枚举转int
int enumValueOne = (int)enumVariable; //==> 2
int enumValueTwo = enumVariable.GetHashCode();//HashCode-哈希代码,枚举成员转换成枚举成员的值.
int enumValueThree = Convert.ToInt32(enumVariable);//==> 2 //字符串转枚举
QQState enum1 = (QQState)Enum.Parse(typeof(QQState), enumStringOne); //==>OffLine
QQState enum2 = (QQState)Enum.Parse(typeof(QQState), ""); //枚举成员值加双引号 ==>Busy //字符串转值
int num1 = (int)Enum.Parse(typeof(QQState), enumStringOne); //==>2 //值转枚举
QQState enum2 = (QQState); //已知数值和枚举名,求出值所指的枚举值 ==>Qme
QQState enum3 = (QQState)Enum.ToObject(typeof(QQState), ); //==>Busy //值转字符串
string enumStringThree = Enum.GetName(typeof(QQState), enum2);
示例演示如何使用Enum.CompareTo 方法

/// <summary>
/// 记录各种车的车门个数.
/// </summary>
public enum VehicleDoors //车门
{
Motorbike = , //摩托车
Sportscar = , //跑车
Sedan = , //轿车
Hatchback = //厢车
}; //声明枚举类型的变量.
VehicleDoors myVeh = VehicleDoors.Sportscar;
VehicleDoors yourVeh = VehicleDoors.Motorbike;
VehicleDoors otherVeh = VehicleDoors.Sedan;
//该示例显示以下输出:
// Sportscar比Motorbike有更多的门吗?
//是的
//
//Sportscar比Sedan有更多的门吗?
//不 Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, yourVeh);
//Environment.NewLine和 “\r\n” 回车换行的作用类似
Console.WriteLine("{0}{1}", myVeh.CompareTo(yourVeh) > ? "Yes" : "No", Environment.NewLine);
Console.WriteLine("Does a {0} have more doors than a {1}?", myVeh, otherVeh);
Console.WriteLine("{0}", myVeh.CompareTo(otherVeh) > ? "Yes" : "No");//三目运算符返回"Yes" 还是 "No"
示例演示Enum.Parse、Enum.GetName、Enum.GetName方法

public enum Colors
{
Red, //红色
Green, //绿色
Blue, //蓝色
Yellow //黄色
}; public enum Styles
{
Plaid = , //格纹
Striped = , //条文
Tartan = , //格子呢绒
Corduroy = //灯芯绒
}; string colorName = Enum.GetName(typeof(Colors), ); //返回string类型,枚举元素名字
Console.WriteLine("颜色枚举的第四个值为 {0}", colorName); /*初识foreach循环用于列举出集合中所有的元素
* foreach语句中的表达式由关键字in隔开的两个项组成。in右边的项是集合名
* in左边的项是变量名,用来存放该集合中的每个元素。
* 该循环的运行过程如下:每一次循环时,从集合中取出一个新的元素值。
* 放到只读变量中去,如果括号中的整个表达式返回值为true,foreach块中的语句就能够执行。
* 一旦集合中的元素都已经被访问到,整个表达式的值为false,控制流程就转入到foreach块后面的执行语句。
*/
foreach (var name in Enum.GetNames(typeof(Styles)))
{
Console.WriteLine("样式枚举基数是{0}对应的枚举名字{1}{2}",
(int)Enum.Parse(typeof(Styles),name),name,"\r\n");
//Type type = name.GetType();
//Console.WriteLine("我是什么类型{0}", type);
}

c# 之Enum--枚举的更多相关文章
- c# (ENUM)枚举组合类型的谷歌序列化Protobuf
c# (ENUM)枚举组合类型的谷歌序列化Protobuf,必须在序列化/反序列化时加上下面: RuntimeTypeModel.Default[typeof(Alarm)].EnumPassthru ...
- C#将Enum枚举映射到文本字符串
介绍 当将以前的C代码移植到C#中时,我快发疯了,因为有很多的数组需要将常量映射到字符串.当我在寻找一个C#的方法来完成的时候,我发现了一个自定义属性和映射的方法. 如何使用代码? 对每一个enum枚 ...
- MVC3不能正确识别JSON中的Enum枚举值
一.背景 在MVC3项目里,如果Action的参数中有Enum枚举作为对象属性的话,使用POST方法提交过来的JSON数据中的枚举值却无法正确被识别对应的枚举值. 二.Demo演示 为了说明问题,我使 ...
- 161208、Java enum 枚举还可以这么用
在大部分编程语言中,枚举类型都会是一种常用而又必不可少的数据类型,Java中当然也不会例外.然而,Java中的Enum枚举类型却有着许多你意想不到的用法,下面让我们一起来看看. 先来看一段代码示例: ...
- Python中模拟enum枚举类型的5种方法分享
这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下 以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...
- java之enum枚举(2015年05月28日)
背景: 今天启动了一个新的项目,由于要从之前的旧项目中拿过来一些代码,所以就看了下公司之前项目代码,发现有定义的常量类,也有枚举类,然后就在想着两者的功能差不多,那他们之间到底有什么区别呢,所以就决定 ...
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
一.程序 现实生活中,程序是指完成某些事务的一种既定方法和过程,可以把程序看成是一系列动作执行过程的描述. 在计算机世界,程序是指令,即为了让计算机执行某些操作或解决某个问题而编写的一系列有序指令的集 ...
- Enum枚举类|注解Annotation
Enum枚举类 ①枚举类和普通类的差别: 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类 枚举类的构造器仅仅能使用 private 訪问控制符 枚举类的全部实例必须在枚举类中 ...
- 中秋佳节--理解Enum枚举
一.Enum枚举的作用 1.使用枚举可以限定取值范围,枚举中定义的每个常量都可以理解为对象: Eg: Public enum Color{ RED, GREEN,BULE; } 说明:RED实际上就表 ...
- 获取Enum枚举值描述的几法方法
原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用 ...
随机推荐
- vuejs+thinkphp5+phpsocketIO+timer数据及时更新
1.安装thinkphp5.0以上版本包含workerman框架2.composer安装composer require workerman/phpsocket.io3.vue中调用需要加载weapp ...
- 七十二、SAP中内表的修改,添加条件语句,多条目修改
一.代码如下 二.MODIFY执行前断点数据 三.查看到数据如下 四.往下单步走一步,发现有3条数据被修改 五.执行后修改如下
- 五十九、SAP中常用预定义系统变量
一.SAP中常用预定义系统变量 内容如下: 二.系统变量定义在结构SYST里,我们打开SE38 三.在代码编辑器输入SYST变量 四.双击SYST,来到这个系统结构,里面有很多系统变量 五.我们随便写 ...
- T_SQL 将一列多行数据合并为一行
SQL Server在进行数据迁移和报表处理的时候会遇到将一列多行数据拼接为一个字符串的情况,为了处理这个问题,在网上找了一些相关的资料,提供两种方法,供遇到类似问题的朋友们参考,也借此加深自己的印象 ...
- apache flink源码挖坑 (未完待续)
Apache Flink 源码解读(一) By yyz940922原创 项目模块 (除去.git, .github, .idea, docs等): flink-annotations: flink ...
- 小程序Promise
/** 异步函数回调简化处理 const promisify = require('./promisify') const getSystemInfo = promisify(wx.getSystem ...
- C语言拾遗——sscanf
今天写题用到了sscanf,怕忘赶紧记录一下 去百度了一下这玩意的函数原型好像是长这样的,微软上扣下来的 int sscanf( const char *buffer, const char *fo ...
- 2016蓝桥杯省赛C/C++A组第八题 四平方和
题意: 四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^ ...
- ROS常见问题(一) 安装ROS时sudo rosdep init指令报错 最全解决方法
安装ROS时sudo rosdep init指令报错: ERROR: cannot download default sources list from: https://raw.githubuser ...
- Nginx负载均衡(转发)
http://www.cnblogs.com/jalja/p/6117881.html 一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就 ...