日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

枚举类型(C# 编程指南)

發(fā)布時間:2025/3/14 C# 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 枚举类型(C# 编程指南) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
枚舉類型(C# 編程指南)

更新:2007 年 11 月

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

C# 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。可以使用冒號指定另一種整數(shù)值類型,如前面的示例所示。以下是使用枚舉而不使用數(shù)值類型的好處:

  • 明確為客戶端代碼指定哪些值是變量的有效值。

  • 在 Visual Studio 中,IntelliSense 列出定義的值。

如果不為枚舉數(shù)列表中的元素指定值,則它們的值將以 1 為增量自動遞增。在前面的示例中,Days.Sunday 的值為 0,Days.Monday 的值為 1,依此類推。創(chuàng)建新的 Days 對象時,如果不顯式為其賦值,則它將具有默認值 Days.Sunday (0)。創(chuàng)建枚舉時,應選擇最合理的默認值并賦給它一個零值。這便使得只要在創(chuàng)建枚舉時未為其顯式賦值,則所創(chuàng)建的全部枚舉都將具有該默認值。

如果變量 meetingDay 的類型為 Days,則只能將 Days 定義的某個值賦給它(無需顯式強制轉(zhuǎn)換)。如果會議日期更改,可以將 Days 中的新值賦給 meetingDay

C# ? Days meetingDay = Days.Monday; //... meetingDay = Days.Friday; 說明:

可以將任意整數(shù)值賦給 meetingDay。例如,代碼行 meetingDay = (Days) 42 不會產(chǎn)生錯誤。但也不應該這樣做,因為默認約定的是枚舉變量只容納枚舉定義的值之一。將任意值賦給枚舉類型的變量很有可能會導致錯誤。

可以將任意值賦給枚舉類型的枚舉數(shù)列表中的元素,也可以使用計算值:

C# ? enum MachineState { PowerOff = 0, Running = 5, Sleeping = 10, Hibernating = Sleeping + 5 } ?枚舉類型作為位標志

可以使用枚舉類型定義位標志,從而使該枚舉類型的實例可以存儲枚舉數(shù)列表中定義的值的任意組合。(當然,某些組合在您的程序代碼中可能沒有意義或不允許使用。)

創(chuàng)建位標志枚舉的方法是應用 System..::.FlagsAttribute 屬性并適當定義一些值,以便可以對這些值執(zhí)行 ANDORNOTXOR 按位運算。在位標志枚舉中包含一個值為零(表示“未設置任何標志”)的命名常量。如果零值不表示“未設置任何標志”,則請不要為標志指定零值。

在下面的示例中,定義了 Days 枚舉的另一個版本,即 Days2Days2 具有 Flags 屬性,且它的每個值都是 2 的若干次冪,指數(shù)依次遞增。這樣您就可以創(chuàng)建值為 Days2.TuesdayDays2.ThursdayDays2 變量。

C# [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 運算符,如下面的示例所示:

C# ? // 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 運算,如下面的示例所示:

C# ? // 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.

有關(guān)使用 System..::.FlagsAttribute 屬性定義枚舉類型時需要考慮的事項的更多信息,請參見 System..::.Enum。

?使用 System.Enum 方法發(fā)現(xiàn)和操作枚舉值

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

C# ? 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);

轉(zhuǎn)載于:https://www.cnblogs.com/ottox/archive/2009/03/03/1402386.html

總結(jié)

以上是生活随笔為你收集整理的枚举类型(C# 编程指南)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。