1. 程式人生 > >【轉】編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值

【轉】編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值

enum 整型 沒有 spa day rda alt 編寫 它的

建議7: 將0值作為枚舉的默認值

允許使用的枚舉類型有byte、sbyte、short、ushort、int、uint、long和ulong。應該始終將0值作為枚舉類型的默認值。不過,這樣做不是因為允許使用的枚舉類型在聲明時的默認值是0值,而是有工程上的意義。

試想,一個代表星期的枚舉類Week,我們會想當然地認為它應該有7個元素,代碼如下所示:

    enum Week  
    {  
        Monday = 1,  
        Tuesday = 2,  
        Wednesday = 3,  
        Thursday = 4,  
        Friday 
= 5, Saturday = 6, Sunday = 7 }

那麽,你一不小心編寫了如下的代碼,它的輸出會是什麽呢?

    class Program  
    {  
        static Week week;  
     
        static void Main(string[] args)  
        {  
            Console.WriteLine(week);  
        }  
    } 

輸出為:0

Week看上去多了第8個值,同時,很不幸,這段代碼沒有引發異常。所以,應該始終為枚舉的0值指定默認值。在上面的枚舉類型Week中,可以將顯式為元素賦值去掉,編譯器會自動從0值開始計數,然後逐個為元素的值+1。

註意 除了上文說的Week的第8個值外,其實,如果枚舉類型的元素類型為整型,那麽還可以將其他整型的值賦值給Week:

    week = (Week)9;  
    Console.WriteLine(week); 

這段代碼並不會出錯,輸出:9。

轉自:《編寫高質量代碼改善C#程序的157個建議》陸敏技

【轉】編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值