为什么不能创建非整数枚举?我想知道这是一个语言设计决策,还是在编译器中实现这个问题.
换句话说,在语言中实现非整数枚举是否可行,但是没有合理的需要?或者如果它不可行但是合理,那么会遇到什么障碍?
有人告诉我,在C#中没有这个的原因或理由很简单,非常高兴.
没有技术上的原因导致它无法完成,但是,我们真的更多地谈论一组常量(如果它们相关,可能在一个公共命名空间内).
在枚举中,数值通常是次要的.
在下面的:
enum Fruit { Apple, Orange, Pear, Peach }
我们只描述一组命名常量.我们说的是Fruit类型的变量可以采用这四个值中的一个.每个的整数值是多少,实际上是不相关的.只要我只通过名称引用它们,表示Apple的值是0,1,32,-53还是0.002534f并不重要.
大多数语言都允许您指定应代表每个语言的值,但这确实是次要的.它有时很有用,但它不是枚举的核心目的的一部分.它们只是为您提供一组相关的命名常量,而不必为每个常量ID指定一个整数ID.
此外,枚举通常用于指定可与按位运算组合的可选标志.如果每个值都由一个整数表示(那么你只需要选择一个使用你想要的位模式的整数),这是微不足道的.浮点值在此上下文中没有用处.(逐位和/或操作对浮点值没有多大意义)
我认为枚举是这样做的,因为与你想要做的相反,枚举并不意味着有任何有意义的数字表示.
例如,枚举非常适合描述ff:
enum Color { Black, White, Red, Yellow, Blue, //everything else in between }
(诚然,颜色可以用数字表示复杂类型,但暂时放纵我).心情怎么样?
enum Mood { Happy, Giddy, Angry, Depressed, Sad }
还是品尝?
enum Taste { Bitter, Salty, Sweet, Spicy }
我认为你说对了.底线是:枚举是为了表示难以用数字表示的对象或对象特征,或者没有有意义或实际的数字表示 - 因此任意赋值给整数,这是最方便的数据类型.
这与节假日相反,节假日具有数字意义.