2016-09-29 60 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. 大多数代码编辑器都具有某种智能感知,可以让编码器选择其中一个可能的值,从而使代码更具可写性