枚举类型与位域枚举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 ...
随机推荐
- Mysql查询今天、昨天、7天、近30天、本月、上一月数据
今天 SELECT * FROM 表名 WHERE TO_DAYS(时间字段名) = TO_DAYS(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ...
- ES6学习随笔--字符串模板、解构赋值、对象、循环、函数、Promise、Generrator
在线编译器:babel.github 在nongjs中使用 'use strict' let a = ; 运行node : node --harmony_destructuring xxx.js 代码 ...
- EF Code-First数据迁移
Code-First数据迁移 首先要通过NuGet将EF升级至最新版本. 新建MVC 4项目MvcMigrationDemo 添加数据模型 Person 和 Department,定义如下: usi ...
- 浏览器获取正确的scrollTop值
window.pageYOffset 被所有浏览器支持除了 IE 6, IE 7, IE 8, 不关doctype的事, 注IE9 开始支持此属性. window.scrollY 被Firefox, ...
- android inflate压力泵,将视图发生整合的过程
转自:https://blog.csdn.net/u012702547/article/details/52628453?utm_source=copy inflate方法从大范围来看,分两种,三个参 ...
- Cheatsheet: 2018 05.01 ~ 07.31
JAVA Java Tips: Creating a Monitoring-Friendly ExecutorService Other Modeling the Card Game War in C ...
- hdu 1054 Strategic Game 经典树形DP
Strategic Game Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- sql:SQL Server metadata queries
http://www.mssqltips.com/sqlservertip/3449/making-sql-server-metadata-queries-easier-with-these-new- ...
- js在ie6下的一个bug—未结束标签的错误
在IE6下,如果在body标签没结束前,用代码获取body对象就会出现错误.如: <html> <head> <script type="text/javasc ...
- 使用Hugo搭建个人博客站点
Hugo是个什么东东这里直接忽略,想了解的请查阅其他资料,我们直接上手操作. 安装Hugo 到 Hugo Releases 下载对应的操作系统版本的Hugo二进制文件 解压后得到 hugo_0.17_ ...