博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
enum值与string的转换
阅读量:5303 次
发布时间:2019-06-14

本文共 1576 字,大约阅读时间需要 5 分钟。

转自: http://www.cnblogs.com/ju2ender/archive/2010/05/07/1730064.html

因为原文网页在chrome32 下非常乱,没办法只好转过来了..

首先创建一个控制台项目,我命名为Enum_Test。添加个枚举Color,它有三个成员:Red、Blue、Green:

/// /// 颜色枚举/// public enum Color{    ///     /// 红色    ///     Red,    ///     /// 蓝色    ///     Blue,     ///     /// 绿色    ///     Green}

为每个枚举成员添加文本注释是很有必要的,项目中,面对数个没见过的单词是一件多么痛苦的事。: (

 

得到枚举的值

枚举中的每个成员是有个数字值与其对应的,得到这个值的方法是:

int hashCode = Color.Red.GetHashCode();

 

得到枚举的名字

这个很直接:

string str = Color.Red.ToString();

 

现在问题出现了,如何将这两种都能代表同一枚举的表示方法互相转换呢?我们用Enum.Parse()方法,它需要两个参数,第一个是你要转换的枚举类型,这里要用typeof()方法获取该枚举的类型,而不能直接将枚举放上去,第二个是你要转换的值。

 

将枚举的值转换为对应的名字

int hashCode = Color.Red.GetHashCode();string enumParseStr = Enum.Parse(typeof(Color), hashCode.ToString()).ToString();

Enum.Parse()得到的值是object类型的,我们要转换的是值,得到的是名字,因此ToString()得到名字。

 

将枚举的名字转换为对应的值

string str = Color.Red.ToString();int enumParseInt = Convert.ToInt32(Enum.Parse(typeof(Color), str));

这里要转换的是名字,得到的是值,因此用Convert.ToInt32()得到该值。

 

带给你的小发现

1. 默认枚举第一个值为0,后面的依次加1

例如上面的Color枚举,是没有为其制定值的,这是Red默认为0,依次Blue为1、Green为2。

 

2. 指定枚举的第一个值,它后面的值会从它开始依次加1

为枚举的成员定义值时,若这些值是连续的,不用依次为每个成员都定义,而只用为第一个成员定义值即可。

 

3. 可以无序定义枚举值

无序的定义是允许的,例如可以为Red定义为6,而Blue为1,Green为14。

 

4. 第2条与第3条相结合的情况

现在为Color添加一个颜色White。现在Color有4个成员:

/// /// 颜色枚举/// public enum Color{    ///     /// 红色    ///     Red = 14,    ///     /// 蓝色    ///     Blue,    ///     /// 绿色    ///     Green = 9,    White}

先只为Green定义值9,其他3个均为默认,这时,Green后面的White值为9加1,是10。这时Red为0, Blue为1。

再将Red定义为14,Green定义为9,其他均为默认。这时,Blue为14加1,White的值为9加1。

这4个小小的发现,你知道几个呢?探索总是充满了乐趣!: )

转载于:https://www.cnblogs.com/knightluffy/p/3529230.html

你可能感兴趣的文章
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>
将多张图片和文字合成一张图片
查看>>
自己动手写ORM(01):解析表达式树生成Sql碎片
查看>>
如何使用USBWebserver在本机快速建立网站测试环境
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
变量提升
查看>>
线性表可用顺序表或链表存储的优缺点
查看>>
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>