我做了下面的测试代码:枚举与价值没有场“0”
public enum Test
{
One = 1,
Two = 2
}
public class User
{
public Test Flag { get; set; }
}
,我用这样的:
值将null
,因为它看起来像User.Flag
用0
初始化。这是为什么? 0
对于我的枚举不是有效的值。不应该使用第一个有效值(1
)进行初始化吗?
我做了下面的测试代码:枚举与价值没有场“0”
public enum Test
{
One = 1,
Two = 2
}
public class User
{
public Test Flag { get; set; }
}
,我用这样的:
值将null
,因为它看起来像User.Flag
用0
初始化。这是为什么? 0
对于我的枚举不是有效的值。不应该使用第一个有效值(1
)进行初始化吗?
它初始化为基础类型的默认值,即int
和default(int)
为0
。
基础类型枚举的是int
类型默认和默认值明显是0
(可以指定自定义基本类型,但只有原始数字像enum CustomEnum : byte
)
1.10枚举,C#规格:
每个枚举类型都有一个相应的整型,称为枚举类型的底层 类型。不明确声明 基础类型的枚举类型具有基础类型int。枚举类型的 存储格式和可能值范围由其基本类型 确定。枚举类型可以采用的值集合是 ,不受其枚举成员的限制。具体而言,枚举的基础类型的任何值都可以转换为枚举类型,并且该枚举类型的有效值是不同的。
看到这个答案:http://stackoverflow.com/q/1165414/25727 – Jan
[Enum初始值问题(C#)]的可能重复(http://stackoverflow.com/questions/1165402/question-on-initial-value-of-an-enum-c ) – jgauffin
@Jan:谢谢。没有看到那个。将我自己的问题作为一个副本 – jgauffin