C#基础(五)--枚举的含义及其应用
本章讲解如下枚举的如下几个知识点:
1、什么是枚举?
2、枚举是值类型还是引用类型?
3、如何定义枚举?
4、枚举的好处?
5、枚举在实际系统开发过程中的用处?
一、什么是枚举
枚举:用来存放一组固定的常量
它是用来解决用户进行多次if /switch重复简单的判断
二、枚举是值类型还是引用类型?
枚举是值类型
三、如何定义枚举?
定义枚举的语法非常简单,如下:
public enum 枚举名
{ } 枚举的定义1,如下:
public enum ColorEnum
{
红色, //注意,系统会默认给它赋值为0
蓝色, //系统赋值为1
黑色, //系统赋值为2
粉红色 //系统赋值为3
} 枚举的定义方式2,如下:
public enum ColorEnum
{
红色=, //用户自己赋值 所以枚举是一组 符号名称/值 配对
蓝色, // 系统赋值为3
黑色=, //用户自己赋值2
粉红色 //系统赋值为3
}
所以可以看出,系统会自己给没有赋值的常量赋值,
但赋值的方式是按照上一个的值+1来进行操作的 、 如下枚举的结果正确的是( )
public enum MyColor
{
红色=,
蓝色=,
黑色=,
白色
}
程序输出: Console.WriteLine( (int)MyColor.白色 ); A、 B、 C、 D、程序编译错误 、 如下枚举的结果正确的是( )
public enum MyColor
{
红色=,
蓝色=,
红色=,
白色
}
程序输出: Console.WriteLine( (int)MyColor.红色 ); A、 B、 C、 D、程序编译错误 提示:枚举中等号左边的值不能重复.
枚举的语法
要记得枚举的关键字是 enum
四、枚举的好处?
1、便于用户回忆以前的资料
2、便于少输入代码,使程序更容易编写和维护。
3、防止用户乱输入
五、枚举在实际系统开发过程中的用处?
我举一个仿QQ换肤的简单方法来做一个试验,代码如下,请分析结果会是什么?

我们来看一看,这样的代码确实有点不能让人接受,原因:
1、结果错误,通过客户端传入一个字符串来进行判断,容易出错
2、使用了多个if.. else if ..else if....语句块,
基本上是在做同一件判断的事情
3、如果这个程序拿给一个新手来做,那这个新员工来进行开发,那这个员工的记忆力要非常的好,
不然一个字符输出就有可能得不到想要的结果.....
那如何解决这种多次使用if/switch等简单语句判断呢?这时候枚举就出马了,代码如下:

在用户调用的时候,系统会有提示,如图:

使用枚举的好处,再次强调:
1、便于用户回忆以前的资料
2、便于少输入代码,使程序更容易编写和维护。
3、防止用户乱输入
那如何把字符串转换为枚举类型?
如何把枚举添加到下拉菜单中?
这两个问题,在下一章将会进行讲解.
C#基础(五)--枚举的含义及其应用的更多相关文章
- { MySQL基础数据类型}一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型
MySQL基础数据类型 阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己 ...
- Bootstrap <基础五>表格
Bootstrap 提供了一个清晰的创建表格的布局.下表列出了 Bootstrap 支持的一些表格元素: 标签 描述 <table> 为表格添加基础样式. <thead> 表格 ...
- 【转】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分别 ...
- C#_02.14_基础五_.NET类
C#_02.14_基础五_.NET类 一.类实例: 我们前面说过类是一个模板,我们通过类创建一个又一个的实例,通常情况下类当中的变量是每一个实例都各有一份的,互相不影响,而静态字段是除外的,静态字段是 ...
- Java基础之枚举类型Enum的使用
Java基础之枚举类型Enum的使用 定义 public enum AccruedCleanEnum { SPREAD("1","发票"),OTHER(&quo ...
- day 70 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
- day 69 Django基础五之django模型层(一)单表操作
Django基础五之django模型层(一)单表操作 本节目录 一 ORM简介 二 单表操作 三 章节作业 四 xxx 一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现 ...
- day 57 Django基础五之django模型层之关联管理器
Django基础五之django模型层之关联管理器 class RelatedManager "关联管理器"是在一对多或者多对多的关联上下文中使用的管理器.它存在于下面两种情况 ...
- day 56 Django基础五之django模型层(二)多表操作
Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 ORM ...
随机推荐
- java字符串比较
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在j ...
- html笔记4
<html> <body> <p>这是列表标签</p> <ul> <li>xxx</li> </ul> ...
- 认识Sass和Compass
第一章 Sass和Compass让样式表重焕青春 // 内容概要// 开始学习Sass和动态样式表// 用Sass更高效地写样式表// Compass简介// 用Compass迎接工程实践中的样式挑战 ...
- bzoj:2423: [HAOI2010]最长公共子序列
Description 字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列.令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0, ...
- Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3)(A.B.C,3道暴力题,C可二分求解)
A. Is it rated? time limit per test:2 seconds memory limit per test:256 megabytes input:standard inp ...
- 数学3(博弈+splya)
数学3(博弈+splya) 标签: 数学 hdu_5194 (打表找规律) 题意 有n和黑球和m个白球,现在一个个的取出这些球,如果是黑球则当前标记为1,白球为0,那么当取完这些球会得到一些序列.问你 ...
- ES5.0集群搭建
最近在网上看到很多ES集群的搭建方法,本人在这人使用Elasticsearch5.0.1版本,介绍如何搭建es集群并安装head插件和其他插件安装方法. 一.搭建环境(2台Centos7系统服务器) ...
- [国嵌笔记][005][Linux命令详解]
用户管理类命令 添加用户:useradd name 删除用户:userdel -r name "-r"表示删除对应用户的目录 修改密码:passwd name 切换用户:su - ...
- HTTP协议简介
一.简介 HTTP(HyperText Transfer Protocol, 超文本传输协议) 是访问互联网使用的核心通信协议,也是所有web应用程序使用的通信协议.消息模型:客户端发送请求消息,服务 ...
- 【ELK_Log4net】.net Core重写一个TcpAppender
最近再搞ELK,三个工具部署完毕,想再继承上log4net.没想到.net core版Log4net竟然没有直接Tcp发送消息的appender.醉了.log4net 1.RemotingAppend ...