【C#基礎】枚舉常見使用方法

自己的粗略見解,望各位看客有錯的地方,幫忙指正,感激不盡。

基於定義的使用方法

C# 的枚舉是以一種值類型的數據結構,定義起來感覺有點像靜態類,枚舉名是靜態類名,枚舉項是靜態字段,下面是定義格式:
(訪問級別public/protected/…) enum
{
value - list
}
其中value -list 之間使用逗號隔開,在外面使用的時候,是以枚舉名.枚舉項,來使用,其中枚舉項都是值類型,默認第一項的值是0,如果自定義的話,就另說。

基於枚舉類型的含義的使用方法

枚舉類型,個人認爲不僅僅是通過某種形式組織在一起的一組離散值,也是一組有關係的含義集合,比如enum cube{length,width,high},這個枚舉可以代表所有的立方體集合,當我們定義一個新的立方體的時候,就可以使用數組去給新的立方體初始化賦值,把具體的枚舉項作爲數組的索引;
優點:
便於擴充:當立方體新加一個描述參數的話,只需要在原先的枚舉cube中新添加一項即可;
代碼可讀性增強:使用枚舉項代表索引,使數組的每一項更加易讀;

基於位標誌的枚舉類型的使用

在實際開發應用中,我們經常需要使用一組離散值來標記狀態,枚舉在這方面也有較多的使用,我們可以將枚舉的具體項的值定義成2的倍數,也就是每個枚舉值的二進制形式沒有相同的數據,這樣的使用可以便於我們將不同的狀態靈活組合,以滿足實際開發中的不同需求,有的時候,給枚舉值配上特性描述標籤,更加容易滿足業務需求。

代碼實現部分

基於定義的使用:
public enum Student
{
xiaoming = 0,
xiaohua =1,
xiaowang = 2,
xiaofeng = 3
}
上面使用枚舉對每個學生進行編號,在實際中可以使用(int)Student.xiaoming 來唯一標誌xiaoming同學,編碼值自己隨意定義,可以是任意數字,但是如果沒有給具體的數值的時候,第一項默認爲,第n項默認是第n-1項的值加一的結果;

基於含義的使用:
public enun cube
{
length,
width,
high,
area
}
定義一個立方體:
public class Cuboid
{
public Cuboid()
{}
public Cuboid(double length,double width,double high):this()
{
this.length = length;
this.width = width;
this.high = high;
}
private double length;
private double width;
private double high;
public double Length{get;set;}
public double Width{get;set;}
public double High{get;set;}
}
public static void Main(string[] args)
{
double[] value = new double[3]{2.0,3.0,4.0};
Cuboid cuboid = new Cuboid(){value[cube.length],value[cube.width],value[cube.high]}
Console.WriteLine(“我自定義的長方體的長度是{0},寬度是{1},高度是{2}”,cuboid.length.ToString(),cuboid.width.ToString(),cuboid.high.ToString());
}

基於位標誌的使用:
通常使用枚舉來表示一組相互對立又有聯繫的概念,使用位標誌來表示具體的值,這樣比較容易計算,比如星期,每週有七天,星期一到星期日,但是還是需要表示工作日和週末兩種情況,週末是星期六和星期日,工作日是星期一到星期五;這樣的話,枚舉就可以定義成下面的形式了
public enum Date
{
Monday = 0x01,//0000 0001
Friday = 0x02, //0000 00010
Wednesday = 0x04, // 0000 0100
Tuesday = 0x08, // 0000 1000
Friday = 0x10, // 0001 0000
Saturday = 0x20, //0010 0000
Sunday = 0x40, //0100 0000
WorkDay = Monday |Friday|Wednesday |Tuesday |Friday ,
WeekDay = Saturday| Sunday
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章