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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # enum(C# 參考) **enum** 關鍵字用于聲明枚舉,即一種由一組稱為枚舉數列表的命名常量組成的獨特類型。 通常情況下,最好是在命名空間內直接定義枚舉,以便該命名空間中的所有類都能夠同樣方便地訪問它。但是,還可以將枚舉嵌套在類或結構中。 默認情況下,第一個枚舉數的值為 0,后面每個枚舉數的值依次遞增 1。例如,下面的枚舉,Sat 是 0,Sun 是 1,Mon 是 2 等. ``` enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri}; ``` 如下面的示例所示枚舉數可用初始值來重寫默認值。 ``` enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; ``` 在此枚舉中,強制元素序列從 1 而不是 0 開始。但是,一般建議包括值為 0 的常量。有關更多信息,請參見 [枚舉類型(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/cc138362.aspx)。 每種枚舉類型都有基礎類型,該類型可以是除 [char](https://msdn.microsoft.com/zh-CN/library/x9h8tsay.aspx) 以外的任何整型。枚舉元素的默認基礎類型為 [int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx)。要聲明另一整型枚舉(如 [byte](https://msdn.microsoft.com/zh-CN/library/5bdb6693.aspx)),請在標識符之后緊跟類型,然后再使用冒號,如下面的示例所示。 ``` enum Days : byte {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; ``` 準許使用的枚舉類型有 **byte**、[sbyte](https://msdn.microsoft.com/zh-CN/library/d86he86x.aspx)、[short](https://msdn.microsoft.com/zh-CN/library/ybs77ex4.aspx)、[ushort](https://msdn.microsoft.com/zh-CN/library/cbf1574z.aspx)、[int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx)、[uint](https://msdn.microsoft.com/zh-CN/library/x0sksh43.aspx)、[long](https://msdn.microsoft.com/zh-CN/library/ctetwysk.aspx) 或 [ulong](https://msdn.microsoft.com/zh-CN/library/t98873t4.aspx)。 可以給 Days 類型的變量賦以基礎類型范圍內的任何值,所賦的值不限于已命名的常數。 enum E 的默認值為表達式 (E)0 生成的值。 | ![](https://box.kancloud.cn/2016-01-31_56adb62c1380a.jpg) 注意 | | :-- | | 枚舉數的名稱中不能包含空白。 | 基礎類型指定為每個枚舉數分配的存儲大小。但是,從 **enum** 類型到整型的轉換需要用顯式類型轉換來完成。例如,下面的語句使用強制轉換(從 **enum** 轉換為 **int**)將枚舉數 Sun 賦值給一個 [int](https://msdn.microsoft.com/zh-CN/library/5kzh1b5w.aspx) 類型的變量。 ``` int x = (int)Days.Sun; ``` 將 [System.FlagsAttribute](https://msdn.microsoft.com/zh-CN/library/system.flagsattribute.aspx) 應用于某個枚舉時,如果該枚舉包含一些使用按位 **OR** 運算組合的元素,該特性在用于某些工具時會影響 **enum** 的行為。當使用諸如 [Console](https://msdn.microsoft.com/zh-CN/library/system.console.aspx) 類方法、表達式計算器這樣的工具時,可以注意到這些變化。(請參見第三個示例。) ## 可靠編程 與任何常量一樣,對枚舉中各個值的所有引用在編譯時均將轉換為數值文本。這可形成潛在的版本控制問題,如[常量(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/ms173119.aspx)中所述。 給新版本的枚舉賦其他值,或者更改新版本中枚舉成員的值,可導致相關源代碼出現問題。通常在 [switch](https://msdn.microsoft.com/zh-CN/library/06tc147t.aspx) 語句中使用枚舉值。如果 **enum** 類型中添加了其他元素,則 switch 語句的默認節可能被意外選定。 如果其他開發人員使用您的代碼,則需要提供相關說明,告訴開發人員如果任何 **enum** 類型中添加了新元素,他們的代碼應該如何響應。 在下面的示例中,將聲明枚舉 Days。兩個枚舉數被顯式轉換為整數并賦給整型變量。 ``` public class EnumTest { enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat }; static void Main() { int x = (int)Days.Sun; int y = (int)Days.Fri; Console.WriteLine("Sun = {0}", x); Console.WriteLine("Fri = {0}", y); } } /* Output: Sun = 0 Fri = 5 */ ``` 在下面例中,使用了基類選項來聲明 **long** 類型的 **enum** 成員。請注意,即使枚舉的基礎類型是 **long**,也仍然必須使用強制轉換將枚舉成員顯式轉換為 **long** 類型。 ``` public class EnumTest2 { enum Range : long { Max = 2147483648L, Min = 255L }; static void Main() { long x = (long)Range.Max; long y = (long)Range.Min; Console.WriteLine("Max = {0}", x); Console.WriteLine("Min = {0}", y); } } /* Output: Max = 2147483648 Min = 255 */ ``` 下面的代碼示例闡釋 **enum** 聲明上的 [System.FlagsAttribute](https://msdn.microsoft.com/zh-CN/library/system.flagsattribute.aspx) 特性的使用和效果。 ``` // Add the attribute Flags or FlagsAttribute. [Flags] public enum CarOptions { // The flag for SunRoof is 0001. SunRoof = 0x01, // The flag for Spoiler is 0010. Spoiler = 0x02, // The flag for FogLights is 0100. FogLights = 0x04, // The flag for TintedWindows is 1000. TintedWindows = 0x08, } class FlagTest { static void Main() { // The bitwise OR of 0001 and 0100 is 0101. CarOptions options = CarOptions.SunRoof | CarOptions.FogLights; // Because the Flags attribute is specified, Console.WriteLine displays // the name of each enum element that corresponds to a flag that has // the value 1 in variable options. Console.WriteLine(options); // The integer value of 0101 is 5. Console.WriteLine((int)options); } } /* Output: SunRoof, FogLights 5 */ ``` ## 注釋 如果您移除 **Flags**,則示例將顯示以下值: 5 5 ## C# 語言規范 有關詳細信息,請參閱 [C# 語言規范](https://msdn.microsoft.com/zh-CN/library/ms228593.aspx)。該語言規范是 C# 語法和用法的權威資料。 ## 請參閱 [C# 參考](https://msdn.microsoft.com/zh-CN/library/618ayhy6.aspx) [枚舉類型(C# 編程指南)](https://msdn.microsoft.com/zh-CN/library/cc138362.aspx) [C# 關鍵字](https://msdn.microsoft.com/zh-CN/library/x53a06bb.aspx) [整型表(C# 參考)](https://msdn.microsoft.com/zh-CN/library/exx3b86w.aspx) [內置類型表(C# 參考)](https://msdn.microsoft.com/zh-CN/library/ya5y69ds.aspx) [隱式數值轉換表(C# 參考)](https://msdn.microsoft.com/zh-CN/library/y5b434w4.aspx) [顯式數值轉換表(C# 參考)](https://msdn.microsoft.com/zh-CN/library/yht2cx7b.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>

                              哎呀哎呀视频在线观看