枚举类型与位域枚举Enum
一、概述
定义一个值类型,其中包含固定值集合。枚举类型变量可以是此集合中的任意一个或多个值。
枚举使用enum关键字来声明,与类同级。
枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
二、常数枚举
1、定义枚举类型
显式指定枚举的底层数据类型,如果没有明确指定底层数据类型则默认的数据类型是int类型。
enum sex : byte //显示指定枚举的底层数据类型
{
male,
female, //此逗号可以省略
}; //此分号可以省略
显式设置枚举的成员常量值,默认是从0开始,逐个递增的。但是以下例子却设置成了1,2,3,40,1。而且成员值可以一样的。
void Main()
{
Console.WriteLine((int)Week.Monday); //获取值
} enum Week
{
Monday = ,
Tuesday = ,
Wednesday = ,
Sunday = ,
Everyday = //成员的值可以设置成一样的,但是成员不行
}
2、声明枚举变量并初始化
Color myColor=Color.White;
Color myColor=(Color);//由值转成枚举成员
Color myColor=(Color)Enum.Parse(typeof(Color), "White"); //将字符串解析成枚举成员
3、枚举变量的使用
Color myColor = Color.White;
string Name = myColor.ToString();
int intName = (int)myColor;//或Convert.ToInt32(myColor)
string Name1 = Enum.GetName(typeof(Color), ); //由值获取名
4、循环枚举
Dictionary<string, int> Colorlist = new Dictionary<string, int>();
string[] keys = Enum.GetNames(typeof(Color));
Array values = Enum.GetValues(typeof(Color)); for (int i = ; i < keys.Length; i++)
{
Colorlist.Add(keys[i], (int)values.GetValue(i));
}
应用:
//填充comboBox
comboBox1.DataSource = Enum.GetValues(typeof(Color));
Color value = (Color)comboBox1.SelectedValue; //Grid的列数据
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "My Enum Column";
col.DataSource = Enum.GetValues(typeof(Color));
col.ValueType = typeof(Color);
dataGridView1.Columns.Add(col);
三、位域枚举
位域通常用于由可组合出现的元素组成的列表,位域设计为通过按位“或”运算组合来生成未命名的值,而枚举常数则不是。
位域通常用 2 的幂(即 1、2、4、8 、16等2的几次方)定义枚举常量。这意味着组合的枚举常量中的各个标志都不重叠。
1、定义枚举类型
[Flags] //Flags属性表示此枚举为位域枚举
enum Color
{
None = ,
Red = ,
White = ,
Blue = ,
Black =
}
2、声明枚举变量并初始化
Color myColor=Color.Red | Color.White|Color.Blue;//”|”表示相并
Color myColor = (Color);//由值转成枚举成员,Red, White
Color myColor = (Color)Enum.Parse(typeof(Color), "White,Blue"); //将字符串解析成枚举成员,White, Blue
3、枚举变量的使用
Color myColor = Color.Red | Color.White | Color.Blue;
string Name = myColor.ToString();//Red,White,Blue
int intName = (int)myColor;//或Convert.ToInt32(myColor),7 string Name2 = Enum.GetName(typeof(Color), );//由值获取名,White
4、位域枚举特殊操作
1、判断枚举变量是否包含在某个或某些枚举项:
if(myColor & Color.Red)==Color.Red){}//”&”表示相交,判断是否包含Color.Red
if(myColor & Color.Red)!=){}
2、从枚举变量中去除某个或某些枚举项:
myColor=myColor&(~(Color.Red | Color.White ))//”~”表示取反,出去Color.Red | Color.White两项。
或者
myColor=myColor^(Color.Red | Color.White )//”^”表示异或,不同为真,相同为假。
3、判断美剧变量是否等于某个或某些枚举项:
if((myColor | Color.Write)==Color.Write)//判断是否只有白色。
枚举类型与位域枚举Enum的更多相关文章
- 枚举类型的使用方法enum
一.枚举类型的使用方法 一般的定义方式如下: enum enum_type_name { ENUM_CONST_1, ENUM_CONST_2, ... ENUM_CONST_n } enum_var ...
- 枚举类型Enum
包java.dataStructure中,文件名Enum_demo.java 在JDK5中引入了一个新的关键字——enum,可以直接定义枚举类型 在申明枚举类的时候,也可以申明属性.方法和构造函数,但 ...
- Enum(枚举类型)的基本应用
一.前言 在我们日常的开发过程中,我们经常定义使用常量:在Effective Java建议用枚举来替换常量的使用,提高我们代码的质量,总结一下枚举定义常量的基本使用 二.枚举类型说明 1.枚 ...
- C#中的枚举类型(enum type)
ylbtech 原文 C#中的枚举类型(enum type) 概念 枚举类型(enum type)是具有一组命名常量的独特的值类型.在以下示例中: enum Color { Red, Green, B ...
- [转载] Java中枚举类型的使用 - enum
目录 1 枚举类的编译特性 2 向枚举类中添加方法 3 接口内部创建枚举 4 枚举类中使用枚举 5 扩展: 验证values()不是通过父类继承的 本文转载自博客 - Java枚举类型, 博主对原文内 ...
- java 枚举类型 enum
在java SE5中添加了枚举类型,即enum关键字.在这之前,当你需要创建一个整形常量集时,但是这些枚举值并不会必然的将其自身的取值限制在这个常量集的范围之内,因此这样做的显得不安全,也不方便使用. ...
- Python面向对象-枚举类型enum
枚举类型:在实际问题中,有些变量的值被限定在一个有限的范围内.例如:一个星期有且只有7天,一年有且只有十二个月,一个班每周有6门课程等等.如果把这些量说明为整型.字符串或者其他类型显然是不合适.编程界 ...
- Enum枚举类型实战总结,保证有用!
一般在我们开发时如果能使用枚举罗列的,一般都会定义一个枚举类型.将枚举类型作为方法的参数,可以方便的进行调用,给我们带来不少的遍历,当然有时候它还不如直接用一个int类型带来,带来一定灵活性.但只要能 ...
- golang枚举类型 - iota用法拾遗
在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...
随机推荐
- WordNet::Similarity的安装和使用
简介 WordNet::Similarity是一个Perl实现的软件包,可以用来计算两个概念(或者word sense)之间的语义相似度,它提供了六种计算相似度和三种计算概念之间关联度的方法,所有的这 ...
- 如何在CentOS7上安装桌面环境?
1.安装 GNOME-Desktop 安装GNOME桌面环境 # yum -y groups install "GNOME Desktop" 完成安装后,使用如下命令启动桌面 # ...
- iOS开源项目周报0119
由OpenDigg 出品的iOS开源项目周报第六期来啦.我们的iOS开源周报集合了OpenDigg一周来新收录的优质的iOS开源项目,方便iOS开发人员便捷的找到自己需要的项目工具等. Sharaku ...
- [转]Sql Server 分页存储过程
本文转自: 版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且 ...
- 非常不错的js 屏蔽类加验证类
1 >屏蔽功能类 1.1 屏蔽键盘所有键 <script language="javascript"><!--function document.onkey ...
- veloctiy入门
什么是velocity? velocity是一个基于Java的模板引擎.你可以使用它来预定义模板,并且对模板进行数据渲染,从而动态生成相应的文本.它如同JSP一样经常被使用在MVC分层架构当中,充当V ...
- 1、类、封装(私有private、this关键字)
类与对象 对象在需求中的使用 对面向对象有了了解之后,我们来说说在具体问题中如何使用面向对象去分析问题,和如何使用面向对象. 我们把大象装冰箱为例进行分析. 在针对具体的需求,可以使用名词 ...
- MyBatis别名
Spring的别名管理比较规范,有严格的接口规范,SimpleAliasRegistry实现 -> AliasRegistry接口,而且是线程安全的,Map也用的是ConcurrentHashM ...
- springMVC 静态资源加版本号
springMVC 静态资源加版本号 http://blog.csdn.net/zhangt85/article/details/42126275
- Android Studio下载/更新SDK
今天安装配置Android Studio的时候,用SDK Manager下载SDK的时候只显示了一个7.0,别的都刷新不出来(被墙了).去网上搜索怎么解决,发现很多帖子的方法已经过时了(跟现在的AS版 ...