C# 中的枚舉類型 enum (屬於值類型)


 

原文 C# 中的枚舉類型 enum (屬於值類型)

 

C# 支持兩種特殊的值類型:枚舉和結構。
聲明枚舉:聲明時要聲明所有可能的值。

 

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    namespace enumType  
    {  
        enum Season     // enum 類型定義在 class 外面  
        {  
            Spring, Summer, Fall, Winter    // 最后一個元素后面不加" ; "  
        }  
      
        class Program  
        {  
            //enum Season     // 枚舉變量定義在此處也可以  
            //{  
            //    Spring, Summer, Fall, Winter      
            //}  
      
            static void Main(string[] args)  
            {  
                Season beauty = Season.Fall;  
                Season coldSeason = Season.Winter;  
                Season currentSeason = Season.Summer;  
      
                Console.WriteLine("The beautiful season is {0}.", beauty);                
                // 用 WriteLine 顯示枚舉變量時,編譯器會自動生成代碼,輸出和變量值匹配的字符串  
      
                Console.WriteLine("The beautiful season is {0}.", beauty.ToString());     
                // 也可以使用 ToString 方法,顯式地將一個枚舉變量轉換成代表其當前值的一個字符串  
      
                Console.WriteLine("The current season is {0}.", currentSeason);  
                Console.WriteLine("{0} is very cold.", coldSeason);  
            }  
        }  
    }  

 

 運行后結果如下:

在枚舉的內部,它的每個元素都關聯(對應)着一個整數值。默認情況下,第一個對應整數 0,以后每個元素所對應的整數都遞增 1。我們可以獲取一個枚舉變量的基礎整數值,為此,必須先將它轉換為基本類型。

 

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    namespace enumType  
    {  
        enum Season     // enum 類型定義在 class 外面  
        {  
            Spring, Summer, Fall, Winter    // 最后一個元素后面不加" ; "  
        }  
      
        class Program  
        {  
            static void Main(string[] args)  
            {  
                Season currentSeason = Season.Summer;  
      
                Console.WriteLine("Summer is {0}", (int)currentSeason); // 枚舉的基礎整數值  
            }  
        }  
    }  

 

運行后結果如下:

 也可以把一個特定的整數常量和一個枚舉類型的文字常量關聯起來。

 

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    namespace enumType  
    {  
        enum Season     // 定義為 short 可以節省空間  
        {  
            Spring = 168, Summer, Fall, Winter    // 最后一個元素后面不加" ; "  
        }  
      
        class Program  
        {  
            static void Main(string[] args)  
            {  
                Console.WriteLine("Spring is {0}", (int)Season.Spring);     // 168  
                Console.WriteLine("Summer is {0}", (int)Season.Summer);     // 169 依次 +1  
                Console.WriteLine("Fall is {0}", (int)Season.Fall);         // 170  
                Console.WriteLine("Winter is {0}", (int)Season.Winter);     // 171  
            }  
        }  
    }  

 

 運行后結果如下:

多個枚舉文字常量可能擁有相同的基礎值,可以像如下這樣聲明。

 

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Text;  
      
    namespace enumType  
    {  
        enum Season     // enum 類型定義在 class 外面  
        {  
            Spring, Summer, Fall, Autumn = Fall, Winter    // 最后一個元素后面不加" ; "  
        }  
      
        class Program  
        {  
            static void Main(string[] args)  
            {  
                Console.WriteLine("Spring is {0}", (int)Season.Spring);     // 0  
                Console.WriteLine("Summer is {0}", (int)Season.Summer);     // 1  
                Console.WriteLine("Fall is {0}", (int)Season.Fall);         // 2  
                Console.WriteLine("Autumn is {0}", (int)Season.Autumn);     // 2 基礎值相同  
                Console.WriteLine("Winter is {0}", (int)Season.Winter);     // 3  
            }  
        }  
    }  

 

運行后結果如下:

聲明枚舉時,枚舉的文字常量將默認獲得 int 類型的值。但可以選擇枚舉的基本類型。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM