枚舉
一、枚舉的聲明標准方式:(取值(負數),值的變化方式)
枚舉聲明方式:
訪問修辭符 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;
}
}
}
