C#枚举(Enum)小结

枚举概念

枚举类型(也称为枚举)提供了一种有效的方式来定义可能分配给变量的一组已命名整数常量。该类型使用enum关键字声明。

示例代码1

enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };

默认情况下枚举中每个元素的基本类型都是int。可以使用冒号指定另一种整数类型。

示例代码2

enum Day : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

默认情况下,第一个枚举值具有值0,并且每个连续枚举数的值将增加1。

枚举数可以使用初始值设定项来替代默认值。

若设置某一枚举数的值,之后的枚举数仍然按1递增。

示例代码3

enum Day {Sat=1, Sun, Mon, Tue=5, Wed, Thu, Fri};

每个枚举都有一个基础类型,该基础类型可以是除char外的任何整数类型,枚举元素的默认基础类型是int。

已批准的枚举类型有byte、sbyte、short、ushort、int、uint、long或ulong。

可以为枚举类型的枚举器列表中的元素分配任何值,也可以使用计算值。

示例代码4

enum MachineState
{PowerOff = 0,Running = 5,Sleeping = 10,Hibernating = Sleeping + 5
}

枚举方法

获取名称

public static string GetName(Type enumType, object value);

示例代码5

//获取Day枚举中Day.Friday的名称,返回值为"Friday"
System.Enum.GetName(typeof(Day), Day.Friday)

获取名称数组

public static string[] GetNames(Type enumType);

示例代码6

string[] names = System.Enum.GetNames(typeof(Day));

获取实例值得数组

public static Array GetValues(Type enumType);

实例代码7

Array arr = System.Enum.GetValues(typeof(Day));

将枚举常数的名称或数值的字符串表示转换成等效的枚举对象

public static object Parse(Type enumType, string value);

示例代码8

string day = Day.Friday.ToString();
var fri = (Day)System.Enum.Parse(typeof(Day),day);

相关常用方法可以参考枚举基类 System.Enum

作为位标志的枚举类型

可以使用枚举类型来定义位标志,这使枚举类型的实例能够存储枚举器列表中定义的值的任何组合。 (当然,某些组合在你的程序代码中可能没有意义或不允许使用。)

创建位标志枚举的方法是,应用 System.FlagsAttribute 属性并适当定义一些值,以便可以对这些值执行 ANDORNOT 和 XOR 按位运算。 在位标志枚举中,包括一个值为零(表示“未设置任何标志”)的命名常量。 如果零值不表示“未设置任何标志”,请勿为标志指定零值。

示例代码9

[Flags]
enum Days
{None = 0x0,Sunday = 0x1,Monday = 0x2,Tuesday = 0x4,Wednesday = 0x8,Thursday = 0x10,Friday = 0x20,Saturday = 0x40
}

枚举的位运算

|并集  &交集  ^差集  ~取反

为枚举拓展新方法

示例代码10

 

[Display(Name = "一周")]
public enum Day
{[Display(Name = "星期天")]Sunday,[Display(Name = "星期一")]Monday,[Display(Name = "星期二")]Tuesday,[Display(Name = "星期三")]Wednesday,[Display(Name = "星期四")]Thursday,[Display(Name = "星期五")]Friday,[Display(Name = "星期六")]Saturday
}
/// <summary>
/// 枚举拓展类
/// </summary>
public static class EnumExtend
{/// <summary>/// 根据System.ComponentModel.DataAnnotations下的DisplayAttribute特性获取显示文本/// </summary>/// <param name="t"></param>/// <returns></returns>public static string GetDisplayText(this Enum t){var t_type = t.GetType();var fieldName = Enum.GetName(t_type, t);var objs = t_type.GetField(fieldName).GetCustomAttributes(typeof(DisplayAttribute), false);return objs.Length > 0 ? ((DisplayAttribute)objs[0]).Name : null;}
}

 

  

参考文献:枚举类型(C#编程指南)

转载于:https://www.cnblogs.com/li-learning/p/CSharp_Enum.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用js实现导航栏shoufang效果_【读者投稿】用Github+docsify,我花了半天就搭好了个人博客...

前言“作为一个真正的码农&#xff0c;不能没有自己的个人博客”&#xff0c;这是我说的。惭愧的是&#xff0c;入行两年多了都没搞起来&#xff0c;这让我一度怀疑自己是个假程序员。昨天终于克服了心里的“犹豫”和“恐惧”&#xff0c;尝试搭建了一把&#xff0c;半天就搞好…

ubuntu 重定向

重定向 &#xff08;重新设定方向&#xff09; ls > xxx.txt 将ls显示的内容写入到xxx.txt ls -lah > xxx.txt ls >> xxx.txt 将ls显示的内容以追加方式写入到xxx.txt

IDEA快捷键及xml文件中网址报错

AltShiftTab 切换窗口(从后往前) divTab    补全为 <div></div> #boxTab   补全为 <div id"box"></div> .boxTab   补全为 <div class"box"></div> …

python随机生成数字列表_详解Python利用random生成一个列表内的随机数

首先,需要导入random模块: import random 随机取1-33之间的1个随机数&#xff0c;可能重复: random.choice(range(1,34)) print得到一系列随机数,执行一次得到一个随机数: print(random.choice(range(1,34))) 随机取1-33之间的6个随机数&#xff0c;可能重复: random.choices(r…

构建Java Web开发环境

1.1 JDK&#xff08;Java Development Kit&#xff09;的安装与配置1.1.1 下载最新的JDK&#xff08;我下载的是Java SE 6 Update 25&#xff09;下载地址&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/index.html1.1.2 JDK的安装1、双击名为“jdk-6u2…

ubuntu cd 改变路径

. 表示当前路径 cd &#xff0e;&#xff0e; 后退到上一层路径 cd ../.. 调到上上层路径,相对路径 cd /home/hjd/ 绝对路径 cd ~ 回到家目录 &#xff08;/home/hjd/&#xff09;

cloud foundry_Spring 3.1,Cloud Foundry和本地开发

cloud foundry这篇文章将帮助您在Cloud Foundry上使用MongoDB构建Spring 3.1 Web应用程序。 除了推动Cloud Foundry之外&#xff0c;您还可以使用MongoDB实例在本地环境中进行开发。 目标 此博客发布的目标是在本地构建应用程序&#xff0c;然后发布到本地Cloud Foundry实例。…

python中continue用法案例_Python continue语句实例用法

Python continue语句&#xff1a; 当执行到 continue 语句时&#xff0c;将不再执行本次循环中 continue 语句接下来的部分&#xff0c;而是继续下一次循环。 lst [7,8,9,4,5,6] for i in range(len(lst)): if lst[i] 9: continue #当运行到 continue 语句时&#xff0c;不执…

eclipse中查看某个方法(函数)被谁调用

用了好久一直不知道eclipse中如何实现vs中查找所有引用的功能&#xff0c;今天终于发现了哈哈 选中要查找的方法名&#xff0c;右键->References->Workspace 可以定位到具体的调用位置&#xff0c;快捷键CtrlShiftG&#xff0c;在Search中就会出现调用方法 或者是 右键-&…

ubuntu ln软连接硬连接

软连接:相当于windows的快捷方式 硬连接&#xff1a;又创建了一个名字指向同一个内存区&#xff0c;相当于又复制了一个同样的内容 ln -s 1.txt 2.txt 将文件1.txt建立2.txt软连接 相当于快捷方式 ln 1.txt 3.txt 将文件1.txt建立3.txt硬连接,

一个简单的Map Iterator性能测试

Java Map性能有很多方面可以衡量&#xff0c;但是关键的一个是简单的单线程扫描。 这是一些针对Iterators和Java 8 Map.forEach()简单测试代码&#xff0c;以及一些图形结果。 1.性能测试困难 性能测试是一项非常困难的工作&#xff0c;精确的可重复测试需要Java微基准测试线束…

小数点后保留2位小数的正则表达式

一、前提 整数和小数&#xff0c;保留两位小数的正则表达式&#xff1a; 具体什么意思呢  ^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$ 二、知识点 1、首先从写法上可以看出&#xff0c;使用了显式定义正则表达式的语法&#xff0c;因为其中存在对字符串"\"&…

python字符串是什么_python字符串表示什么

python的字符串就是表示一串字符&#xff0c;字符可以是中文&#xff0c;英文或者数字&#xff0c;或者混合的文本。 python字符串的几种表达方式 1 使用单引号扩起来字符串>>> my python lession #以单引号将字符串扩起来 my python lession >>> a my pyth…

PgSql备份pg_dump与还原手记pg_restore(转)

备份&#xff1a;pg_dump -h localhost -p 5432 -U tradesns -W -F c -b -v -f "/home/tradeworkwangbin/us2010.backup" us2010 恢复&#xff1a;pg_restore -h 192.168.0.100 -p 5432 -U postgres -W -d us2011 -v "/root/us2010.backup" 真没有想到&…

ubuntu ls命令

ls 显示当前文件夹下文件 ls -l 列表显示 ls -a 显示隐藏文件 ls -h 文件大小&#xff0c;自动找单位&#xff08;Kb、M、G&#xff09; 也可以 ls -l -a -h &#xff08;-l -a -h没有先后顺序&#xff0c;-a -h -l&#xff09; 也可以 ls -lah &…

vue 在 html 中自定义 tag

v-if,v-for,:key,:style,v-text,click,:src,:poster,:class,:href转载于:https://www.cnblogs.com/whm-blog/p/10718697.html

cmd进入python环境_python2和python3同时存在,如何CMD中进入不同的环境

当电脑上同时装了python2和python3时&#xff0c;虽然在二者的路径都写入了环境变量PATH中&#xff0c;但是在CMD中运行python命令时只能进入2或者3&#xff08;安装顺序不同进入的也不同&#xff09;&#xff0c;如何进入想要的python版本环境中&#xff1a; 1.首先将二者的的…

ubuntu grep搜索文本

grep &#xff08;Global search Regular Expression and Print out the line&#xff09; grep “ntfs” xxx.txt 显示xxx.txt包括ntfs行 grep -n “ntfs” xxx.txt 显示xxx.txt包括ntfs行&#xff0c;行数 grep -v “ntfs” xxx.txt 显示xxx.txt不包括ntfs行 grep…

java 死锁 解决_Java死锁故障排除和解决

java 死锁 解决JavaOne年度会议的一大优点是主题专家介绍了几个技术和故障排除实验室。 这些实验室之一尤其引起了我的关注&#xff1a;Java冠军Heinz Kabutz提出的“ HOL6500-查找和解决Java死锁 ”。 这是我在该主题上看到的最好的演示之一。 我建议您自己下载&#xff0c;运…

如何使用War包部署Tomcat

前提&#xff1a; 1&#xff1a;已打包好的项目工程War文件 2&#xff1a;正常运行的Tomcat环境 当前的War文件为&#xff1a;GPCDMS.war Tomcat环境为&#xff1a;http://10.122.111.76:9080/ 具体步骤&#xff1a; 1&#xff1a;点击主页左侧 Tomcat Manager 并使用 ad…