命名空间:   System
程序集:  mscorlib(mscorlib.dll 中)

定义一个枚举类型

public enum Week
{
[Description("星期一")] //枚举描述
Monday=, //设置枚举的成员常量值
[Description("星期二")]
Tuesday=,
[Description("星期三")]
Wednesday =,
[Description("星期四")]
Thursday=,
[Description("星期五")]
Friday=,
[Description("星期六")]
Saturday=,
[Description("星期七")]
Sunday=
}
备注:
1.成员的值可以一样的,但是成员不行
例如:你可以设置 public enum Week{Monday=1,Tuseday=1}
但是你不可以出现有两个成员是一样的,例如:public enum Week{Monday=1,Monday=2,Tuseday=3}

2. Console.WriteLine((int)EnumDemo.Week.Friday);//输出 5

3. string[] array1 = Enum.GetNames(typeof(EnumDemo.Week));
Console.WriteLine(array1[1]); //输出Tuesday Enum.GetNames 方法 (Type) ,检索指定枚举中常数名称的数组。
参数enumTypeType: System.Type枚举类型。
返回值Type: System.String[]enumType 的常数名称的字符串数组

4. Array array2 = Enum.GetValues(typeof(EnumDemo.Week));
Console.WriteLine(array2.GetValue(1)); //输出:Tuesday Enum.GetValues 方法(Type)
参数enumTypeType: System.Type
返回值Type: System.Array

4. Type t = Enum.GetUnderlyingType(typeof(EnumDemo.Week));     
Console.WriteLine(t); //输出 System.Int32 Enum.GetUnderlyingType 方法 (Type)
参数enumType,基础类型将被检索的枚举。
返回值Type: System.Type enumType 的基础类型

6. //由值获取内容
int i = 1;
string Name = Enum.Parse(typeof(EnumDemo.Week), i.ToString()).ToString();
Console.WriteLine(Name);//输出:Monday 7. //由内容获得值
string Name2 = "Monday";
int j = Convert.ToInt32(Enum.Parse(typeof(EnumDemo.Week), Name2));
Console.WriteLine(j);//输出:1
8.
Dictionary<string, int> Sexlist = new Dictionary<string, int>();
string[] keys = Enum.GetNames(typeof(EnumDemo.Week));
Array values = Enum.GetValues(typeof(EnumDemo.Week));
for (int i = 0; i < keys.Length; i++)
{
Sexlist.Add(keys[i], (int)values.GetValue(i));
} 9.

/// <summary>
   /// 获取描述信息
   /// </summary>
   /// <param name="en"></param>
   /// <returns></returns>
   public static string description( Enum en)
   {
        Type type = en.GetType();
        MemberInfo[] memInfo = type.GetMember(en.ToString());
       if (memInfo != null && memInfo.Length > 0)
       {
          object[] attrs = memInfo[0].GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
          if (attrs != null && attrs.Length > 0)
          return ((DescriptionAttribute)attrs[0]).Description;
       }
     return en.ToString();
   }

  Console.WriteLine(description(EnumDemo.Week.Friday));//输出:星期五











c# 枚举的更多相关文章

  1. Swift enum(枚举)使用范例

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  2. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  3. Objective-C枚举的几种定义方式与使用

    假设我们需要表示网络连接状态,可以用下列枚举表示: enum CSConnectionState { CSConnectionStateDisconnected, CSConnectionStateC ...

  4. Help Hanzo (素数筛+区间枚举)

    Help Hanzo 题意:求a~b间素数个数(1 ≤ a ≤ b < 231, b - a ≤ 100000).     (全题在文末) 题解: a~b枚举必定TLE,普通打表MLE,真是头疼 ...

  5. 枚举:enum

    枚举 所谓枚举就是指定好取值范围,所有内容只能从指定范围取得. 例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植. 使用简单类完成颜色固定取值问题. 1,就是说,一个类只能完成 ...

  6. .NET 基础一步步一幕幕[方法、结构、枚举]

    方法.结构.枚举 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值,写void 方法名:P ...

  7. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  8. 用枚举enum替代int常量

    枚举的好处: 1. 类型安全性 2.使用方便性 public class EnumDemo { enum Color{ RED(3),BLUE(5),BLACK(8),YELLOW(13),GREEN ...

  9. c#编程基础之枚举

    枚举的意义就在于限制变量取值范围. 当可以确定的几种取值时才可以用. 如果输入一个字符串需要进行判断是否是我们需要的字符串时,则一般需要这样写: using System; using System. ...

  10. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

随机推荐

  1. 更改机器名后,打开TFS提示工作区错误的处理

    1,打开vs下的"开发人员命令提示"2,按下面格式输入命令:tf workspaces 查看, 假设显示如下: C:\Program Files (x86)\Microsoft V ...

  2. Android系列:res之shape制作

    大家好,pls call me francis. nice to me you. 本文将介绍使用在Android中使用shape标签绘制drawable资源图片. 下面的代码是shap标签的基本使用情 ...

  3. 【Beta】Daily Scrum Meeting第一次

    1.任务进度 学号 已完成 接下去要做 502 更换网络框架为okHttp 搭建好PHP单元测试环境,写出PHP测试的demo 509 PHP的login返回值:插入数据改为单行插入:系负责人更新单行 ...

  4. jQuery中事件与动画的总结

       1.加载DOM     1.1.window事件 window.onload=function(){}.... 时机:其他资源都加载完毕后,再执行   $(function(){}) ……:只是 ...

  5. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  6. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法

      Android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, ...

  7. 编写一个基本的连接池来实现连接的复用&一些工程细节上的优化

    package it.cast.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQL ...

  8. 用"hosting.json"配置ASP.NET Core站点的Hosting环境

    通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() . public class Program { p ...

  9. Lesson 6 Percy Buttons

    Text I have just moved to a house in Bridge Street. Yesterday a bagger knocked at my door. He asked ...

  10. 使用border做三角形

    网站上经常会使用一些三角形,除了图片的方式,实际上利用border我们可以做出纯CSS的三角形.我们知道border是个边抖可以单独设置,当四个边相交的时候他们是什么时候改变的? .t0{ margi ...