zoukankan      html  css  js  c++  java
  • enum值与string的转换

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

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

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

    /// <summary>
    /// 颜色枚举
    /// </summary>
    public enum Color
    {
        /// <summary>
        /// 红色
        /// </summary>
        Red,
    
        /// <summary>
        /// 蓝色
        /// </summary>
        Blue, 
    
        /// <summary>
        /// 绿色
        /// </summary>
        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个成员:

    /// <summary>
    /// 颜色枚举
    /// </summary>
    public enum Color
    {
        /// <summary>
        /// 红色
        /// </summary>
        Red = 14,
    
        /// <summary>
        /// 蓝色
        /// </summary>
        Blue,
    
        /// <summary>
        /// 绿色
        /// </summary>
        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个小小的发现,你知道几个呢?探索总是充满了乐趣!: )

  • 相关阅读:
    函数模板——隐式实例化、显式实例化、显式具体化
    SQLAlchemy
    pymysql的使用
    mysql 安装
    Django---Cerley使用
    支付宝支付功能
    Django--log配置
    Vue--基础
    Python学习手册
    针对特定网站scrapy爬虫的性能优化
  • 原文地址:https://www.cnblogs.com/knightluffy/p/3529230.html
Copyright © 2011-2022 走看看