关于枚举用法的小笔记

最近因为经常需要使用枚举来进行操作,所以记录一下经常用到的一些枚举的用法.

什么是枚举

首先枚举是一组命名整型常量。枚举类型是使用enum关键字声明的。
C#枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。

public enum <enum_name>{
	enumeration list
}
// eg:
public enum Days{ Sun, Mon, tue, Wed, thu, Fri, Sat }

枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值.默认情况下,第一个枚举符号的值是0.

为枚举提供友好的显示

枚举在控制显示上可以通过Attribute 注解来进行显示的优化,例如:

public enum Days{
	[StringValue("周日")]
	Sun = 0,
	[StringValue("周一")]
	Mon=1,
	[StringValue("周二")]
	Tue=2,
	[StringValue("周三")]
	Wed=3,
	[StringValue("周四")]
	Thu=4,
	[StringValue("周五")]
	Fir=5,
	[StringValue("周六")]
	Sat=6
}

然后添加一个扩展方法

public static class ExtensionMethods
    {
        public static string GetStringValue(this System.Enum value)
        {
            string stringValue = value.ToString();
            Type type = value.GetType();
            FieldInfo fieldInfo = type.GetField(value.ToString());
            StringValue[] attrs = fieldInfo.
                GetCustomAttributes(typeof(StringValue), false) as StringValue[];
            if (attrs.Length > 0)
            {
                stringValue = attrs[0].Value;
            }
            return stringValue;
        }
    }

使用方式如下:

var sunStr = Days.Sun.GetStringValue();
//  sunStr 的值将会是 "周日"

枚举、字符串、值的相互转换

还是对于Days这个枚举,下面则是相互转换的关系表达

		Days day  =  Days.Sun
       string  dayString  =   " Mon " ;
       int  dayValue  =   2;
 
       // 枚举转字符串 
       string  enumStringOne  =  day.ToString(); //效率低,不推荐
       string  enumStringTwo  =  Enum.GetName( typeof (Days), day);//推荐
       
       // 枚举转值 
       int  enumValueOne  =  day.GetHashCode();
       int  enumValueTwo  =  ( int )day;
       int  enumValueThree  =  Convert.ToInt32(day);
 
       // 字符串转枚举 
      Days enumOne  =  (Days)Enum.Parse( typeof (Days), dayString);
 
       // 字符串转值 
       int  enumValueFour  =  ( int )Enum.Parse( typeof (Days), dayString);
 
       // 值转枚举 
      Days enumTwo  =  (Days)dayValue;
      Days enumThree  =  (Days)Enum.ToObject( typeof (Days), dayValue);
 
       // 值转字符串 
       string  enumStringThree  =  Enum.GetName( typeof (Days), dayValue)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值