枚举
一、枚举的声明标准方式:(取值(负数),值的变化方式)
枚举声明方式:
访问修辞符 enum 枚举名:基础类型
{
枚举成员
}
Eg:
Public enum Fruit:long
{
Apple=-1,
Orange=2
Banana
}
枚举取值类型:byte、sbyte、short、ushort、int、uint、long 或 ulong
枚举成员的取值和值得变化:默认值为0,没有手动复制的成员都是在上一个枚举的基础上加1,枚举可以为负数,枚举成员不是变量时常量。
声明一个枚举变量调用枚举的实例方法:Fruit tempFruit;
和其他类型之间不能进行隐试转化。
二、枚举的继承关系:
是值类型,
继承至Enum,ValueType(对C#值类型的思考)
三、Enum的一些类方法和实例方法。()
和其他类型之间的相互转化(Fruit)Enum.Parse(typeof(Fruit),”apple”);
获取所有的值Enum.GetValues(typeof(Fruit))
获取所有的成员的名称Enum.getNames(typeof(Fruit))
获取基础类型(默认为int):Enum.GetUnderlyingType(typeof(Fruit))
四、枚举的Description特性的使用:
作用:添加对应枚举的中文描述()
如何获取:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace ConsolePro
{
[Description("水果")]
public enum Fruit
{
[Description("苹果")]
apple = 1,
[Description("橘子")]
orange = 2,
[Description("香蕉")]
banana = 3
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Fruit.apple.GetDescription(false));
Console.WriteLine(Fruit.apple.GetDescription(true));
Console.Read();
}
}
public static class Extension
{
public static string ToConcatString(this string[] strs, char concatChar)
{
StringBuilder build = new StringBuilder();
foreach (var item in strs)
{
build.AppendFormat("{0}{1}", item, concatChar);
}
return build.ToString().TrimEnd(concatChar);
}
/// <summary>
/// 获取枚举的Description特性的描述
/// </summary>
/// <param name="enumObj"></param>
/// <param name="isEnumSelf">是否显示的enum类型上的Description还是当前枚举值的</param>
/// <returns></returns>
public static string GetDescription(this object enumObj, bool isEnumSelf)
{
string description = string.Empty;
try
{
if (enumObj != null)
{
Type enumType = enumObj.GetType();
DescriptionAttribute desAttr = null;
if (isEnumSelf)
{
desAttr = (DescriptionAttribute)Attribute.GetCustomAttribute(enumType, typeof(DescriptionAttribute));
}
else
{
FieldInfo field = enumType.GetField(Enum.GetName(enumType, enumObj));
desAttr = (DescriptionAttribute)Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute));
}
if (desAttr != null)
{
description = desAttr.Description;
}
}
}
catch
{
return string.Empty;
}
return description;
}
}
}