2016-09-29 61 views
2

爲什麼Enums很重要,我有點困惑。比方說,我們有以下的代碼...Enums的重要性

enum playerState {walking, running, idle, jumping, dead}; 

playerState myPlayerState = idle; 

if{energy == 0} 
{ 
    myPlayerState = dead; 
} 

這是如何比只使用一個字符串,並完全避免枚舉,並在需要時切換到新的合適的字符串值更有效?

string playerState = "idle"; 

if{energy == 0} 
{ 
    playerState = "dead"; 
} 

回答

3

不同之處在於枚舉定義了變量可以容納的一組嚴格的值,如果您嘗試給它一些不好的東西,會給您一個編譯時錯誤。

使用字符串,它們可以取任何值,如果字符串在程序中被定義爲「壞」,它會在運行時失敗;或根本沒有,並導致不可預知的行爲。

在編譯時失敗的事情要比它們在運行時失敗要好得多;如果可能。

@Jeff雖然是對的。 Enum將永遠佔用更少的空間,所以如果你有很多變量在浮動,使用Enum可能會有所作爲。

+0

感謝,甚至沒有想到編譯與運行時組件...這很有道理。 – 4Matt

+0

@ 4Matt Np。你會詛咒編譯時錯誤,直到你開始在運行時彈出一些東西。如果您認爲我的回答最能回答您的問題,請接受。 – Carcigenicate

2

2個原因:

1)在大多數語言的枚舉將使用整數或類似,其通常將佔用更少的內存比可比的字符串來實現。

2)它是其他開發人員查看您的代碼的指南,讓他們知道變量可以使用的狀態列表有限,並告訴他們自然語言中的內容。

1
  1. 枚舉類型是在大多數語言,是已知的編譯器和可以在編譯時
  2. 檢查由於有限值的受限整數(一個整數,可以採取一組一組有限值的)枚舉的人類可讀名稱使得代碼更具可讀性
  3. 與字符串不同,對枚舉的存儲和操作需要較少的計算量
  4. 大多數代碼編輯器都具有某種智能感知,可以讓編碼器選擇其中一個可能的值,從而使代碼更具可寫性