枚举
一、枚举的声明标准方式:(取值(负数),值的变化方式)
枚举声明方式:
访问修辞符 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);
}
///
///
获取枚举的Description特性的描述
///
///
name="enumObj">
///
name="isEnumSelf">是否显示的enum类型上的Description还是当前枚举值的
///
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;
}
}
}