91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#枚舉類型的概念及應用

發布時間:2021-07-16 00:38:19 來源:億速云 閱讀:143 作者:chen 欄目:編程語言

這篇文章主要講解了“C#枚舉類型的概念及應用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C#枚舉類型的概念及應用”吧!

C#枚舉類型(也稱為枚舉)為定義一組可以賦給變量的命名整數常量提供了一種有效的方法。例如,假設您必須定義一個變量,該變量的值表示一周中的一天。該變量只能存儲七個有意義的值。若要定義這些值,可以使用枚舉類型。枚舉類型是使用 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。可以使用冒號指定另一種整數值類型,如前面的示例所示。以下是使用枚舉而不使用數值類型的好處:

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

在 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;

C#枚舉類型說明:

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

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

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

C#枚舉類型作為位標志

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

創建位標志枚舉的方法是應用 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;  }

C#枚舉類型的問題:若要在某個枚舉上設置標志,請使用邏輯 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..::.FlagsAttribute 屬性定義枚舉類型時需要考慮的事項的更多信息,請參見System..::.Enum。

使用 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);

感謝各位的閱讀,以上就是“C#枚舉類型的概念及應用”的內容了,經過本文的學習后,相信大家對C#枚舉類型的概念及應用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌乐县| 呼图壁县| 湖北省| 洪江市| 临清市| 翼城县| 喀喇| 郓城县| 达日县| 株洲县| 二手房| 云浮市| 顺义区| 宁阳县| 梓潼县| 长泰县| 新沂市| 龙江县| 内江市| 肇庆市| 南部县| 宁海县| 西乌珠穆沁旗| 上杭县| 无锡市| 大兴区| 杭锦后旗| 海淀区| 于田县| 年辖:市辖区| 二手房| 壤塘县| 惠安县| 稷山县| 龙胜| 罗田县| 基隆市| 铁岭市| 河南省| 宁陕县| 桓仁|