枚舉的使用。
首先來看枚舉是什么?枚舉類型是一種的值類型,它用於聲明一組命名的常數。
首先來看枚舉是什么?枚舉類型是一種的值類型,它用於聲明一組命名的常數。
一.聲明:enum 枚舉名{中間放入值.}如:enum
Student{小明,小紅}那么此枚舉中就為小紅和小明
Student{小明,小紅}那么此枚舉中就為小紅和小明
二.枚舉中的賦值
在枚舉中.
1:
系統會自動給枚舉中的值賦予整數的值(如果不手動賦值,可以理解為下標)
比如我們想找到他的值,可以寫代碼如下:
int num = (int)test.小明;
Console.WriteLine(num);
那么此時得到的結果為:0.
同理如如果輸入的為
int num = (int)test.小紅;
那么得到的結果為:1.
2
如果手動給以賦值
enum Student{小明=10,小紅}
int num1 = (int)test.小明;Console.WriteLine(num);int num2 = (int)test.小紅;Console.WriteLine(num);
那么此時得到的結果為:num1=10,num2=11
而此時
enum Student{小明,小紅=10}
int num1 = (int)test.小明;Console.WriteLine(num);int num2 = (int)test.小紅;Console.WriteLine(num);
那么此時得到的結果為:num1=0,num2=10
可以看出后面的為自動增長
在枚舉中.
1:
系統會自動給枚舉中的值賦予整數的值(如果不手動賦值,可以理解為下標)
比如我們想找到他的值,可以寫代碼如下:
int num = (int)test.小明;
Console.WriteLine(num);
那么此時得到的結果為:0.
同理如如果輸入的為
int num = (int)test.小紅;
那么得到的結果為:1.
2
如果手動給以賦值
enum Student{小明=10,小紅}
int num1 = (int)test.小明;Console.WriteLine(num);int num2 = (int)test.小紅;Console.WriteLine(num);
那么此時得到的結果為:num1=10,num2=11
而此時
enum Student{小明,小紅=10}
int num1 = (int)test.小明;Console.WriteLine(num);int num2 = (int)test.小紅;Console.WriteLine(num);
那么此時得到的結果為:num1=0,num2=10
可以看出后面的為自動增長
3:在枚舉中無法訪問外面的東西(說專業點就是方法,屬性)比如:

是會報錯的,當然這里放類是可以的
三:再看看enum的一下方法
enum的一些方法貌似都在Enum中(小編是一邊學一邊寫的,有不對的地方請批評)打開Enum后我們會發現好多方法

其實有好多方法。但大多都是重寫的。
如CompareTo,Equals,Format,ToString,ToObject,Parse,GetHashCode相信大多數的方法大家都認識。其實,HasFlag,IsDefined,GetValues,GetUnderlyingType,GetName,GetTypeCode,GetNames,大家可能有點陌生小編留意的是GetName,GetNames,GetValues
可能會常用(小編現在從網上就找不到對其更好的解釋,我們老師也不會講,現在小編學習很困難)
(1)首先來看GetName,方法定義為
public
static string GetName(Type enumType, object value);返回一個string類型的值定義string str = Enum.GetName(typeof(Student),0);輸出結果為:小明其中有個typeof可以理解為,是通過他來找到這個enum(枚舉)的如果你在定義enum中小明=10,小紅那么str將什么都不顯示
(2)GetName,方法定義為
public static string[] GetNames(Type enumType);返回一個string[]類型的值定義為:string[] str = Enum.GetNames(typeof(Student));利用for循環輸出的為:小明,小紅
(3)GetValues,(小編發現不是多好用,可以不太會吧。。。)
方法定義為public static Array GetValues(Type enumType);返回一個Array類型的值Array arr = Enum.GetValues(typeof(test));
也是通過for循環輸出:for
(int i = 0; i < 2; i++){Console.WriteLine(arr.GetValue(i));}發現結果是一樣的.