C#基础_枚举
一、在学习枚举之前,首先来听听枚举的优点。
1、枚举能够使代码更加清晰,它允许使用描述性的名称表示整数值。
2、枚举使代码更易于维护,有助于确保给变量指定合法的、期望的值。
3、枚举使代码更易输入。
二、枚举说明
1、简单枚举
- 枚举使用enum关键字来声明,与类同级。枚举本身可以有修饰符,但枚举的成员始终是公共的,不能有访问修饰符。枚举本身的修饰符仅能使用public和internal。
- 枚举是值类型,隐式继承自System.Enum,不能手动修改。System.Enum本身是引用类型,继承自System.ValueType。
- 枚举都是隐式密封的,不允许作为基类派生子类。
- 枚举类型的枚举成员均为静态,且默认为Int32类型。
- 每个枚举成员均具有相关联的常数值。此值的类型就是枚举的底层数据类型。每个枚举成员的常数值必须在该枚举的底层数据类型的范围之内。如果没有明确指定底层数据类型则默认的数据类型是int类型。
- 枚举成员不能相同,但枚举的值可以相同。
- 枚举最后一个成员的逗号和大括号后面的分号可以省略
C#提供类一个类来方便操作枚举,下面给出这个类的常用方法:
方法 | 名称 |
CompareTo | 将此实例与指定对象进行比较并返回一个对二者的相对值的指示 |
Equals | 指示此实例是否等于指定的对象 |
Format | 根据指定格式将指定枚举类型的指定值转换为其等效的字符串表示形式 |
GetName | 在指定枚举中检索具有指定值的常数的名称 |
GetNames | 检索指定枚举中常数名称的数组 |
GetTypeCode | 返回此实例的基础 TypeCode |
GetUnderlyingType | 返回指定枚举的基础类型 |
GetValues | 索指定枚举中常数值的数组 |
HasFlag | 确定当前实例中是否设置了一个或多个位域 |
IsDefined | 返回指定枚举中是否存在具有指定值的常数的指示 |
Parse | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 一个参数指定该操作是否不区分大小写 |
TryParse | 将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象。 用于指示转换是否成功的返回值 |
要显示指定枚举的底层数据类型很简单,只需在声明枚举的时候加个冒号,后面紧跟要指定的数据类型。
enum sex : byte //显示指定枚举的底层数据类型
{
male,
female, //此逗号可以省略
}; //此分号可以省略
显式设置枚举的成员常量值,默认是从0开始,逐个递增的。但是以下例子却设置成了1,2,3,4,5,6,7,0。而且成员值可以一样的。
enum Week
{
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Sunday = 0,
Everyday = 1 //成员的值可以设置成一样的,但是成员不行
}
Console.WriteLine((int)Week.Monday); //获取值
C#基础_枚举的更多相关文章
- JS基础_枚举对象中的属性
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java基础_枚举类型
作用:让数据更简洁,更易读,增加代码可读性. 为了用1,2,3,4,5分别表示老师,学生,小组,班主任,后勤,可以直接设置一个变量,让roleType = 1,但这样写代码可读性差. 也可以定义一个成 ...
- 【转】Java基础笔记 – 枚举类型的使用介绍和静态导入--不错
原文网址:http://www.itzhai.com/java-based-notes-introduction-and-use-of-an-enumeration-type-static-impor ...
- 黑马程序员:Java基础总结----枚举
黑马程序员:Java基础总结 枚举 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...
- 算法基础_递归_求杨辉三角第m行第n个数字
问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好) ...
- Flutter实战视频-移动电商-05.Dio基础_引入和简单的Get请求
05.Dio基础_引入和简单的Get请求 博客地址: https://jspang.com/post/FlutterShop.html#toc-4c7 第三方的http请求库叫做Dio https:/ ...
- Flutter实战视频-移动电商-08.Dio基础_伪造请求头获取数据
08.Dio基础_伪造请求头获取数据 上节课代码清楚 重新编写HomePage这个动态组件 开始写请求的方法 请求数据 .但是由于我们没加请求的头 所以没有返回数据 451就是表示请求错错误 创建请求 ...
- BZOJ_1406_[AHOI2007]密码箱_枚举+数学
BZOJ_1406_[AHOI2007]密码箱_枚举+数学 Description 在一次偶然的情况下,小可可得到了一个密码箱,听说里面藏着一份古代流传下来的藏宝图,只要能破解密码就能打开箱子,而箱子 ...
- [Zlib]_[0基础]_[使用zlib库压缩文件]
场景: 1. WIndows上没找到系统提供的win32 api来生成zip压缩文件, 有知道的大牛麻烦留个言. 2. zlib比較经常使用,编译也方便,使用它来做压缩吧. MacOSX平台默认支持z ...
随机推荐
- TypeScript 泛型(generic) 入门介绍
TypeScript 泛型函数 下面来创建第一个使用泛型的例子:identity函数.这个函数会返回任何传入它的值.你可以把这个函数当成是echo命令.不用泛型的话,这个函数可能是下面这样: func ...
- 【RocketMQ】NameServer的启动
NameServer是一个注册中心,Broker在启动时向所有的NameServer注册,生产者Producer和消费者Consumer可以从NameServer中获取所有注册的Broker列表,并从 ...
- Python-安装pycocotools错误记录
安装 pycocotools 时出现错误 fatal error: Python.h: No such file or directory 解决方式 apt-get install python3.8 ...
- Vue几行代码实现搜索功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- React技巧之发出http请求
原文链接:https://bobbyhadz.com/blog/react-send-request-on-click 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中, ...
- bat-命令行配置静态IP地址
查看连接名称ipconfig 打开命令提示符,输入netsh后回车 输入interface后回车 输入ip,回车 输入set address "连接名称" static 新IP地址 ...
- window下Redis快速启动,以及闪退问题解决
我下载的是免安装版的window版redis,解压后如下: 第一步:在解压的redis文件夹下新建一个redis-start.bat(window启动一般都是xx.bat) 第二步:打开redis.w ...
- CADisplayLink、NSTimer循环引用解决方案
前言:CADisplayLink.NSTimer 循环引用问题 CADisplayLink.NSTimer会对Target产生强引用,如果target又对他们产生强引用,那么就会引发循环引用. @ ...
- 查询postgresql表结构和索引
通过系统数据字典查询表结构 selectcol.table_schema,col.table_name,col.ordinal_position,col.column_name,col.data_ty ...
- NGINX屏蔽垃圾爬虫
if ($http_user_agent ~* (80legs.com|Abonti|AcoonBot|Acunetix|adbeat_bot|AddThis.com|adidxbot|ADmantX ...