【轉】編寫高質量代碼改善C#程序的157個建議——建議7: 將0值作為枚舉的默認值
阿新 • • 發佈:2017-11-29
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值作為枚舉的默認值