use*_*ame 16 c# enums
在C#中将'0'作为枚举的默认值有什么意义?如果我声明以不同数字开头的枚举:
enum Color { Blue = 1, Green, Red, }
然后var color = default(Color)- 将返回'0'.我希望看到最小值.如果枚举的每个成员对应于某个特定数字并且"0"不是有效值,则此行为可能会导致问题.
var color = default(Color)
Ale*_*kov 12
所有值类型(包括枚举)的默认值都是按位0.因此,即使未明确定义,它也意味着0始终是枚举的可能值.
这是规范:默认值表
编辑:有关更多详细信息,请检查MSDN的枚举类型 - 枚举
枚举是一种特殊的类型,它的排序方式是从其他值类型(通常不可能)派生,但行为作为其支持类型的值类型.枚举只能使用一些整数值作为支持类型.
注意:正如@archil指出的,枚举值可以包含任何支持类型的值,而不管枚举本身枚举的常量列表如何.对于标有"FlagsAttribute"的枚举,通常需要此行为,但对于普通枚举,它可能不直观.
Dan*_*n J 10
我们只能猜测为什么 .NET框架的某个方面是以某种方式设计的.对于最直接的解释,我想在MSDN文档中强调这一说法:
枚举是一组命名常量,其基础类型是除Char之外的任何整数类型.如果未显式声明基础类型,则使用Int32.
请注意,.NET枚举本质上是整数类型的扩展.整数类型的默认值为0,因此枚举继承该行为是合理的(如果在您说明的情况下有些不方便).
arc*_*hil 7
枚举总是有可能存在不存在的价值.这就是Enum.IsDefined Method存在的原因.
枚举E的默认值是表达式(E)0产生的值.
归档时间:
13 年,3 月 前
查看次数:
9484 次
最近记录:
13 年,2 月 前