<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 枚舉類型(C# 編程指南) 枚舉類型(也稱為枚舉)為定義一組可以賦給變量的命名整數常量提供了一種有效的方法。例如,假設您必須定義一個變量,該變量的值表示一周中的一天。該變量只能存儲七個有意義的值。若要定義這些值,可以使用枚舉類型。枚舉類型是使用 [enum](https://msdn.microsoft.com/zh-cn/library/sbbt4032.aspx)關鍵字聲明的。 ``` 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](https://msdn.microsoft.com/zh-cn/library/5kzh1b5w.aspx)。可以使用冒號指定另一種整數值類型,如前面的示例所示。有關可能的類型的完整列表,請參見 [enum(C# 參考)](https://msdn.microsoft.com/zh-cn/library/sbbt4032.aspx)。 可以通過轉換驗證基礎數值與基礎類型,如下例所示。 ``` 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); // Output: // 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; ``` | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 可以將任意整數值賦給 meetingDay。例如,代碼行 meetingDay = (Days) 42 不會產生錯誤。但也不應該這樣做,因為默認約定的是枚舉變量只容納枚舉定義的值之一。將任意值賦給枚舉類型的變量很有可能會導致錯誤。 | 可以將任意值賦給枚舉類型的枚舉數列表中的元素,也可以使用計算值: ``` enum MachineState { PowerOff = 0, Running = 5, Sleeping = 10, Hibernating = Sleeping + 5 } ``` ## 枚舉類型作為位標志 可以使用枚舉類型定義位標志,從而使該枚舉類型的實例可以存儲枚舉數列表中定義的值的任意組合。(當然,某些組合在您的程序代碼中可能沒有意義或不允許使用。) 創建位標志枚舉的方法是應用 [System.FlagsAttribute](https://msdn.microsoft.com/zh-cn/library/system.flagsattribute.aspx) 特性并適當定義一些值,以便可以對這些值執行 **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.FlagsAttribute](https://msdn.microsoft.com/zh-cn/library/system.flagsattribute.aspx) 特性定義枚舉類型時需要考慮的事項的更多信息,請參見 [System.Enum](https://msdn.microsoft.com/zh-cn/library/system.enum.aspx)。 ## 使用 System.Enum 方法發現和操作枚舉值 所有枚舉都是 [System.Enum](https://msdn.microsoft.com/zh-cn/library/system.enum.aspx) 類型的實例。不能從 [System.Enum](https://msdn.microsoft.com/zh-cn/library/system.enum.aspx) 派生新類,但可以使用它的方法發現有關枚舉實例中的值的信息以及操作這些值。 ``` 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); ``` 有關更多信息,請參見[AllMembers.T:System.Enum](https://msdn.microsoft.com/zh-cn/library/system.enum_members.aspx)。 此外,還可以使用擴展方法為枚舉創建新方法。有關更多信息,請參見[如何:為枚舉創建新方法(C# 編程指南)](https://msdn.microsoft.com/zh-cn/library/bb383974.aspx)。 ## 重要章節 [更多有關變量](http://go.microsoft.com/fwlink/?LinkId=221230) 在 [開始 Visual c# 2010](http://go.microsoft.com/fwlink/?LinkId=221214) ## 請參閱 [System.Enum](https://msdn.microsoft.com/zh-cn/library/system.enum.aspx) [C# 編程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [enum(C# 參考)](https://msdn.microsoft.com/zh-cn/library/sbbt4032.aspx)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看