亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#編程中枚舉類型的使用教程

2020-01-24 01:17:55
字體:
來源:轉載
供稿:網友


枚舉類型(也稱為枚舉)為定義一組可以賦給變量的命名整數常量提供了一種有效的方法。例如,假設您必須定義一個變量,該變量的值表示一周中的一天。該變量只能存儲七個有意義的值。若要定義這些值,可以使用枚舉類型。枚舉類型是使用 enum關鍵字聲明的。

enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; 

默認情況下,枚舉中每個元素的基礎類型是 int??梢允褂妹疤栔付硪环N整數值類型,如前面的示例所示??梢酝ㄟ^轉換驗證基礎數值與基礎類型,如下例所示。

Days today = Days.Monday;int dayNumber =(int)today;Console.WriteLine("{0} is day number #{1}.", today, dayNumber);Months thisMonth = Months.Dec;byte monthNumber = (byte)thisMonth;Console.WriteLine("{0} is month number #{1}.", thisMonth, monthNumber);

輸出:

Monday is day number #1.Dec is month number #11.

以下是使用枚舉而不使用數值類型的好處:
明確為客戶端代碼指定哪些值是變量的有效值。
在 Visual Studio 中,IntelliSense 列出定義的值。
如果未在枚舉數列表中指定元素的值,則值將自動按 1 遞增。在前面的示例中,Days.Sunday 的值為 0,Days.Monday 的值為 1,依此類推。創建新的 Days 對象時,如果不顯式為其賦值,則它將具有默認值 Days.Sunday (0)。創建枚舉時,應選擇最合理的默認值并賦給它一個零值。這便使得只要在創建枚舉時未為其顯式賦值,則所創建的全部枚舉都將具有該默認值。
如果變量 meetingDay 的類型為 Days,則只能將 Days 定義的某個值賦給它(無需顯式強制轉換)。如果會議日期更改,可以將 Days 中的新值賦給 meetingDay:

Days meetingDay = Days.Monday;//...meetingDay = Days.Friday;

注意:可以將任意整數值賦給 meetingDay。例如,代碼行 meetingDay = (Days) 42 不會產生錯誤。但也不應該這樣做,因為默認約定的是枚舉變量只容納枚舉定義的值之一。將任意值賦給枚舉類型的變量很有可能會導致錯誤。
可以將任意值賦給枚舉類型的枚舉數列表中的元素,也可以使用計算值:

enum MachineState{  PowerOff = 0,  Running = 5,  Sleeping = 10,  Hibernating = Sleeping + 5}

枚舉類型作為位標志
可以使用枚舉類型定義位標志,從而使該枚舉類型的實例可以存儲枚舉數列表中定義的值的任意組合。(當然,某些組合在您的程序代碼中可能沒有意義或不允許使用。)
創建位標志枚舉的方法是應用 System.FlagsAttribute 特性并適當定義一些值,以便可以對這些值執行 AND、OR、NOT 和 XOR 按位運算。在位標志枚舉中包含一個值為零(表示“未設置任何標志”)的命名常量。如果零值不表示“未設置任何標志”,則請不要為標志指定零值。
在下面的示例中,定義了 Days 枚舉的另一個版本,命名為 Days2。 Days2 具有 Flags 特性,且它的每個值都是 2 的若干次冪,指數依次遞增。這樣,您將能夠創建值為 Days2.Tuesday 和 Days2.Thursday 的 Days2 變量。

[Flags]enum Days2{  None = 0x0,  Sunday = 0x1,  Monday = 0x2,  Tuesday = 0x4,  Wednesday = 0x8,  Thursday = 0x10,  Friday = 0x20,  Saturday = 0x40}class MyClass{  Days2 meetingDays = Days2.Tuesday | Days2.Thursday;}

若要在某個枚舉上設置標志,請使用按位 OR 運算符,如下面的示例所示:

// Initialize with two flags using bitwise OR.meetingDays = Days2.Tuesday | Days2.Thursday;// Set an additional flag using bitwise OR.meetingDays = meetingDays | Days2.Friday;Console.WriteLine("Meeting days are {0}", meetingDays);// Output: Meeting days are Tuesday, Thursday, Friday// Remove a flag using bitwise XOR.meetingDays = meetingDays ^ Days2.Tuesday;Console.WriteLine("Meeting days are {0}", meetingDays);// Output: Meeting days are Thursday, Friday

若要確定是否設置了特定標志,請使用按位 AND 運算,如下面的示例所示:

// Test value of flags using bitwise AND.bool test = (meetingDays & Days2.Thursday) == Days2.Thursday;Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not");// Output: Thursday is a meeting day.

。
使用 System.Enum 方法發現和操作枚舉值
所有枚舉都是 System.Enum 類型的實例。不能從 System.Enum 派生新類,但可以使用它的方法發現有關枚舉實例中的值的信息以及操作這些值。

string s = Enum.GetName(typeof(Days), 4);Console.WriteLine(s);Console.WriteLine("The values of the Days Enum are:");foreach (int i in Enum.GetValues(typeof(Days)))  Console.WriteLine(i);Console.WriteLine("The names of the Days Enum are:");foreach (string str in Enum.GetNames(typeof(Days)))  Console.WriteLine(str);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国语自产精品视频在免费| 欧美华人在线视频| 日本久久久久久久久| 成人免费福利在线| 欧美精品电影在线| 久久久久久久国产精品| 亚洲欧洲国产精品| 欧美日韩亚洲国产一区| 亚洲免费视频在线观看| 亚洲欧美国产精品| 国产精品女人网站| 国产精品高潮呻吟视频| 亚洲欧美日韩中文在线制服| 日韩a**站在线观看| 日韩精品免费看| 欧美电影免费观看大全| 国产精品69精品一区二区三区| 51精品在线观看| 91久久在线视频| 久久久国产精品亚洲一区| 亚洲视频在线播放| 亚洲免费视频一区二区| 91久久国产综合久久91精品网站| 91久久在线视频| 日韩美女写真福利在线观看| 亲子乱一区二区三区电影| 欧美成人国产va精品日本一级| 日韩在线观看网站| 国产一区二区三区在线观看视频| 久久精品精品电影网| 亚洲电影免费观看高清| 久久综合久久88| 国产大片精品免费永久看nba| 成人网在线视频| 欧美日韩在线另类| 亚洲女人被黑人巨大进入al| 亚洲乱码国产乱码精品精| 国产精品免费观看在线| 欧美高清自拍一区| 国产成人亚洲综合91| 欧美巨猛xxxx猛交黑人97人| 少妇av一区二区三区| 欧美国产亚洲视频| 日韩在线视频观看正片免费网站| 成人国产精品一区二区| 亚洲精品视频二区| 日韩视频永久免费观看| 欧美激情a∨在线视频播放| 高清日韩电视剧大全免费播放在线观看| 人妖精品videosex性欧美| 日韩久久免费电影| 欧美激情影音先锋| 在线观看不卡av| 国产精品专区一| 亚洲欧美中文日韩在线| 97久久精品人搡人人玩| 一本一本久久a久久精品综合小说| 国产精品白丝av嫩草影院| 91高清视频在线免费观看| 欧美日韩在线免费观看| 久久天天躁狠狠躁夜夜爽蜜月| 精品久久久久久久久久久久| 性欧美亚洲xxxx乳在线观看| 亚洲精品电影网| 国产日韩欧美另类| 丝袜亚洲欧美日韩综合| 欧美人与性动交| 国产精品直播网红| 色综合天天综合网国产成人网| 庆余年2免费日韩剧观看大牛| 亚洲欧美在线播放| 欧美视频免费在线观看| 国产午夜精品视频| 精品一区二区三区四区| 在线视频精品一| 国产精品成人一区二区三区吃奶| 欧美综合在线观看| 一个人看的www久久| 欧美二区乱c黑人| 91精品啪在线观看麻豆免费| 日韩理论片久久| 国产视频久久网| 黑丝美女久久久| 亚洲成av人乱码色午夜| 九九视频直播综合网| 久久精品视频免费播放| 久久久97精品| 亚洲欧美三级在线| 欧美性资源免费| 日韩一区二区精品视频| 欧美www在线| 国产精品扒开腿做| 日韩中文在线不卡| 国产不卡精品视男人的天堂| 亚洲天堂av综合网| 91在线无精精品一区二区| 在线观看欧美www| 国产精品久久久久久久久久三级| 欧美第一页在线| 欧美激情一级二级| 5252色成人免费视频| 亚洲人永久免费| 亚洲国产成人一区| 成人国产精品久久久| 国产成人精彩在线视频九色| 国产精品99导航| 久久久女女女女999久久| 亚洲网站视频福利| 欧美不卡视频一区发布| 久久久成人av| 欧美成人精品影院| 久久久综合免费视频| 91精品在线一区| 91国产精品电影| 亚洲国产精品999| 欧美专区福利在线| 亚洲精品资源美女情侣酒店| 久久视频在线免费观看| 久久成年人免费电影| 国产精品香蕉在线观看| 韩国三级日本三级少妇99| 欧美富婆性猛交| 97涩涩爰在线观看亚洲| 欧美视频第一页| 国产精品丝袜久久久久久不卡| 日韩精品在线第一页| 国产一区二区在线免费视频| 91九色国产在线| 欧美性高潮在线| 欧美疯狂做受xxxx高潮| 国产精品人成电影在线观看| 亚洲精品狠狠操| 中文字幕av日韩| 亚洲色图在线观看| 一区二区三区四区视频| 亚洲国产成人精品久久| 精品亚洲夜色av98在线观看| 亚洲精品久久久久久久久| 欧美日韩成人在线播放| 欧美美最猛性xxxxxx| 久久国产精品久久久| 精品国产91久久久久久老师| 亚洲人成网站777色婷婷| 色悠悠久久久久| 欧美国产亚洲视频| 亚洲国产精品人人爽夜夜爽| 中文字幕亚洲无线码在线一区| 丝袜亚洲另类欧美重口| 51精品国产黑色丝袜高跟鞋| 国产丝袜一区二区| 91精品国产综合久久香蕉922| 久久这里只有精品视频首页| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲一区二区三区sesese| 色婷婷亚洲mv天堂mv在影片| 97精品视频在线播放| 亚洲国产精品va在线看黑人| 亚洲国产精品成人av| 26uuu亚洲国产精品| 国产亚洲精品美女| 欧美在线视频导航| 精品综合久久久久久97| 亚洲精品成人av| 奇门遁甲1982国语版免费观看高清|