1. Enum定义

枚举类型是经常用的一种“名称/值”的形式,例如:

public enum FeedbackStatus
     {
         New,
         Processing,
         Verify,
         Closed
     }

定义枚举类型之后我们在使用时方便了许多,不用再记着0代表什么状态,1代表什么状态。而且枚举类型时强类型的,在编译时就可以进行类型安全检查。枚举类型是值类型的,它是直接从System.Enum继承的,System.Enum又是继承自System.ValueType。但是枚举类型不可以定义方法、属性或者事件。

2. 常用方法

①Enum.GetUnderlyingType:获取枚举类型实例值的基类。

Console.WriteLine(Enum.GetUnderlyingType(typeof(FeedbackStatus)));//结果System.Int32

ToString() :转换为字符串形式

FeedbackStatus status=FeedbackStatus .New ;
    Console.WriteLine(status.ToString());    //结果New
    Console.WriteLine(status.ToString("G")); //结果New
    Console.WriteLine(status.ToString("D")); //结果0

GetValues:获取枚举类型中定义的所有符号以及对应的值。

FeedbackStatus[] status = (FeedbackStatus[])Enum.GetValues(typeof(FeedbackStatus));
            foreach(FeedbackStatus s in status )
            {
                Console.WriteLine("{0:D}--{0:G}", s);
            }

GetNames:获取枚举类型中定义的所有符号。

string[] arr= Enum.GetNames(typeof(FeedbackStatus));
          foreach (string name in arr)
          {
              Console.WriteLine(name);
          }

Parse, TryParse:将文本类型转换为对应的枚举类型。

FeedbackStatus status = (FeedbackStatus)Enum.Parse(typeof(FeedbackStatus), "New", false);
Enum.TryParse("aaa", false, out status);

IsDefine:判断一个值对于一个枚举类型是否合法。

Console .WriteLine(Enum.IsDefined(typeof(FeedbackStatus),1));    //true
Console.WriteLine(Enum.IsDefined(typeof(FeedbackStatus), "New"));//true
Console.WriteLine(Enum.IsDefined(typeof(FeedbackStatus), "new"));//false,区分大小写
Console.WriteLine(Enum.IsDefined(typeof(FeedbackStatus), "aaa"));//false
Console .WriteLine(Enum.IsDefined(typeof(FeedbackStatus ),5));   //false

3. 扩展方法与枚举

上面提到过枚举中是不允许定义方法和事件的。但是我们可以通过扩展方法变相的为枚举添加方法。

public  static class EnumMethod
{
    public static void Show(this FeedbackStatus status)
    {
        string[] arr = Enum.GetNames(typeof(FeedbackStatus));
        Console.WriteLine("枚举类型列表:");
        foreach (string name in arr)
        {
            Console.WriteLine(name);
        }
    }
}

static void Main(string[] args)
      {
          FeedbackStatus status = FeedbackStatus.Processing;
          status.Show();

}

本文转自 陈敬(Cathy) 博客园博客,原文链接:

http://www.cnblogs.com/janes/archive/2012/02/06/2340112.html

,如需转载请自行联系原作者

跟小静读CLR via C#(18)——Enum相关推荐

  1. 跟小静读CLR via C#-开篇及目录

    最近正在拜读Jeffrey大师的.NET巨作-<CLR via C#>.好书就像一杯茶,需要静下心来慢慢品.在写笔记的过程中,也加入了自己的思考:在和园友们的交流中,理解也不断的加深. 目 ...

  2. 跟小静读CLR via C#(02)-基元类型、引用类型、值类型

    跟小静读CLR via C#(02)-基元类型.引用类型.值类型 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架类库FCL存在着直接的映 ...

  3. 跟小静读CLR via C#(05)- 访问限定、数据成员

    跟小静读CLR via C#(05)- 访问限定.数据成员 今天跟大家分享一下关于访问限定和数据成员的知识.主要包括以下两点: Abstract, sealed, virtual, new, over ...

  4. 跟小静读CLR via C#(06)- 构造器

    跟小静读CLR via C#(06)- 构造器 最近忙着看新还珠,好几天不学习了.玩物丧志啊,罪过罪过. 今天总结的是类构造器的知识,其实这方面的文章蛮多的,可还是觉得亲自写一下对自己的思考和认识会有 ...

  5. 跟小静读CLR via C#(16)--泛型

    泛型就像是一个模板,常常定义一些通用的算法,具体调用时再替换成实际的数据类型,提高了代码的可重用性. 一.初识泛型 1. 简单实例 以最常用的FCL中的泛型List<T >为例: stat ...

  6. 跟小静读CLR via C#(10)-参数

    最近几天学了参数,其实对于参数本不陌生,从上学学C语言基础的时候就学过了.不过细心学下来,还是收获了一些. 一. 命名参数.可选参数 命名参数和可选参数是在Visual C#2010中引入的新特性. ...

  7. 跟小静学CLR via C#(12)-委托Delegate

    本来按照进度应该学习事件了,可总觉得应该委托在前,事件在后,才好理解. 委托是一个类,它提供了回调函数机制,而且是类型安全的.使用委托可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数 ...

  8. 跟小静读《jQuery权威指南》——目录

    前言 2014年开始了,年底给自己制订的学习计划,第一步先从学习<jQuery权威指南>开始. jQuery大家都很比较熟悉,但是我经常是边用的时候边对照着API,这次找本书通读一遍,记录 ...

  9. android百度地图小人头像怎么做,出包女王村雨静-小静-Murasame Oshizu-头像图片-资料介绍-acg人物点评...

    村雨静是动漫<to love>中的登场人物,是四百年前过世的幽灵,进入御门制作的人工身体里转进彩南高中.因为是附身身体,所以经常跌倒,也经常出包的麻烦制造者.一见到最害怕的狗,念力就会失控 ...

最新文章

  1. 动态规划入门 洛谷P1108 低价购买
  2. Siri:开启智能语音营销时代
  3. 用JavaScript实现动态省市县三级联动
  4. Property 和 Attribute 的区别(转)
  5. DAG镶嵌模型+原始路径打印
  6. [BZOJ 1799] self 同类分布
  7. java 创建消息队列_java - 在Java中动态创建异步消息队列 - 堆栈内存溢出
  8. 泰勒·考恩的《大停滞?》
  9. 基于com的delphi和matlab接口编程研究,基于COM组件的VB与MATLAB接口编程(续)
  10. MBUS CJ/T 188水表协议 Meter-Bus总线
  11. 知识图谱发展的难点 构建行业知识图谱的重要性
  12. 好好生活,总会遇见美好事物
  13. 数模分析第五天---判别分析
  14. CE认证和CCC认证区别?
  15. Android通过反射获取手机是否有NavigationBar方法
  16. HTTP协议 --HTTP协议详解
  17. DL380 Gen7 ILO无法进入,报错。解决一例。
  18. PTA 2021年秋-MOOC-编程练习
  19. 古希腊与古罗马的关系
  20. postman接口测试工具发起webservice请求

热门文章

  1. BIM时代要来了?有了这份职业规划who怕who
  2. 当C++遇到空指针异常......
  3. 05JS实现弹性相册
  4. 龙芯+复旦微FPGA全国产VPX高速数据采集卡解决方案
  5. Excel如何将工作表按数值大小排序
  6. 【open stack】openstack从入门到放弃
  7. 学习使用php实现生成模糊图片的方法类整理
  8. Axure-图片放大缩小
  9. 如何利用新闻营销提高商品成交率?
  10. 非结构化数据定义、处理方法及重要性