获取枚举类型的名字字符串的方法
C++版
总之就是查表法了。
代码例子如下。
#include <stdio.h> typedef enum { SUN, MON, TUE, WED, THU, FRI, SAT, } DAY; const char * const day[] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT", }; int main() { DAY today = WED; printf("Today is %s.\n", day[today]); return 0; }
C#版
.NET是比C++好用呀。代码说明一切。
public enum TimeOfDay { Morning = 0, Afternoon = 1, Evening } public void EnumTest() { TimeOfDay time = TimeOfDay.Afternoon; //将枚举字符串打印,即枚举类型转换(解析)成字符串类型 Console.WriteLine(time.ToString());//输出:Afternoon //获取枚举字符串的值,即将一个表示枚举成员的字符串,解析为对应枚举类型 TimeOfDay time2 = (TimeOfDay)Enum.Parse(typeof(TimeOfDay), "Evening", true); //枚举类型可以强制转换成整型,整型也可以强制转换成枚举型 Console.WriteLine((int)time2);//输出:2 // 遍历所有的枚举元素 ; foreach (string s in Enum.GetNames(typeof(TimeOfDay))) { Console.WriteLine(s); } //输出: Morning // Afternoon // Evening }
关于C#枚举类型的一点补充:
枚举类型都是值类型。
System.Enum是一个抽象类(abstract class),所有枚举类型都直接继承自它,当然也同时继承了它的所有成员。
所有的值类型都是System.ValueType的后代,枚举类型也不例外,枚举类型直接继承自System.Enum,而System.Enum却又直接继承自System.ValueType的,所以,枚举类型也是 System.ValueType的后代。
值类型都是System.ValueType的后代,但System.ValueType的后代不全是值类型,System.Enum就是唯一的特例!
在System.ValueType的所有后代中,除了System.Enum之外其它都是值类型。
事实上,我们可以在.NET的源代码中找到System.Enum的声明:
public abstract class Enum : ValueType, IComparable, IFormattable, IConvertible
- 1. 所有枚举类型(enum type)都是值类型。
- 2. System.Enum和System.ValueType本身是引用类型。
- 3. 枚举类型(enum type)都是隐式的直接继承自System.Enum,并且这种继承关系只能由编译器自动展开。但System.Enum本身不是枚举类型(enum type)。
- 4. System.Enum是一个特例,它直接继承自System.ValueType,但本身却是一个引用类型。
5. 枚举类型可以被装箱成System.Enum、System.ValueType、System.Object或者System.IConvertible、System.IFormattable、System.IComparable。
注意:在.NET 1.1上,枚举类型只能被装箱到System.Enum、System.ValueType、System.Object;而在.NET 2.0上,枚举类型还能被装箱到System.Enum所实现的三个接口:System.IConvertible、 System.IComparable、System.IFormattable。对应的装箱操作既可以为隐式的也可以是显式的。
获取枚举类型的名字字符串的方法相关推荐
- php 怎么查看文件类型信息,php获取文件类型和文件信息的方法
php获取文件类型和文件信息的方法 发布于 2015-10-07 05:26:52 | 81 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
- 获取枚举类型的 中文 描述 和值
C# 通过Attitude特性来实现,相对方便些 namespace Extensions {/// <summary>/// 定义枚举扩展类/// </summary>pub ...
- .net工具类 获取枚举类型的描述
一般情况我们会用枚举类型来存储一些状态信息,而这些信息有时候需要在前端展示,所以需要展示中文注释描述. 为了方便获取这些信息,就封装了一个枚举扩展类. /// <summary>/// 枚 ...
- C#中关于“集合已被修改,可能无法操作枚举类型”报错的解决方法
出错的代码如下 foreach (var item in 你定义的集合) { 这里是你写的对集合的操作语句: } 这个时候项目运行起来的过后,就会提示 ...
- java获取枚举的值_JAVA枚举Enum,通过枚举值获取枚举类型
枚举类: import java.util.Optional; public enum PurchaseDemandEnum { YJJSL(1,"研究技术类"), XTGCL(2 ...
- C# 获取枚举类型描述Description值
代码 /// <summary>/// 获取当前枚举描述/// </summary>/// <param name="enumValue">&l ...
- iOS 14获取不到WiFi名字的解决方法
每次iOS系统版本升级,都会带来一些变化,就像获取手机当前的WiFi名字,iOS13需要用户允许获取位置信息才能获得WiFi名字 用旧的CNCopyCurrentNetworkInfo不知道为什么没拿 ...
- Java笔记-通过反射获取枚举类型中所有数据
程序运行截图如下: 代码如下: Em.java package cn.it1995;public enum Em {ONE(1, "第一个枚举"),TWO(2, "第二个 ...
- Java并发:五种线程安全类型、线程安全的实现、枚举类型
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u014454538/ article/details/98515807 1. Java中的线程安全 Java线程安全:狭义地认 ...
最新文章
- JVM class加载机制的总结 收藏
- Makefile:自动化变量 $@,$^,$<,$?
- java小数点的代码_java小数位的例子
- 基于VTK User Guide和VTK Textbook学习
- Java多线程编程-(4)-线程间通信机制的介绍与使用
- BIOS基础知识(上)
- vc access mysql_VC中访问Access数据库的方法
- 「腾讯地图」小程序插件
- css+javascript模拟OneNote2007Tab标签
- java 日语文档翻译_日语文档怎么翻译?一分钟教会你日语翻译
- SQLite数据库版本升级
- Vuforia Area及新功能讲解
- 广告文案:用文案讲好故事的广告是如何做?
- java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation问题解决
- shiro-基本原理和逻辑配置
- Adobe After Effects CC 2020 中英文语言切换方法
- vue使用参数直接取到data数据
- python计算圆柱体的表面积和体积_java设计:问题是编写程序计算圆柱体的体积和表面积...
- 2021年中国综艺赞助情况回顾及未来发展趋势:品牌更乐于与成熟的综N代合作,未来合作方式更多元化[图]
- imx6ull项目也是封装成脚本安装 Poky 交叉编译工具链类似ATK-STM32MP157交叉编译
热门文章
- 软路由OpenWrt dnsmasq解析内网上游DNS
- [Java类加载器]Java中classLoader浅析.
- Error C2280
- CNN卷积神经网络(数字分类)
- unity需要什么配置_《英雄联盟》LoL需要什么电脑配置?英雄联盟电脑配置要求。...
- 大数据公司Palantir融得7亿美元 曾追踪拉登
- poj之旅——3050
- 《c 语言程序设计》宝钏,《双别窑》:妻子苦守寒窑18年,却只换来了18天的团聚...
- 4g没信号就无服务器,福特领界没有4G网络信号故障检修
- 视频剪辑,教你添加滚动字幕