我需要一个枚举类型变量,它不会自动初始化为第一个元素的值。 有什么方法可以做到吗?
答案 0 :(得分:6)
枚举变量不会始终初始化为枚举的第一个值。
例如/ static变量,它们被初始化为" 0"枚举的值 - 可能不是命名值,例如
enum Color
{
Red = 1,
Blue = 2,
Green = 3
}
Color c; // This will be 0
局部变量不会自动初始化 - 必须在可以读取它们的第一个点之前明确分配它们,就像任何其他变量一样。
您并不十分清楚自己想要实现的目标 - 如果您能提供更多有关背景的详细信息,那将会有很大帮助。使用可空值类型可能可能是您想要的,或者您可能只想在构造函数中强制进行初始化,例如。
答案 1 :(得分:4)
从技术上讲,枚举初始化为0,而不是第一个值:
enum Test {
Second = 1,
Third = 2
}
Test test;
void Main()
{
Console.WriteLine("{0}", (int)test);
}
// Result: 0
来自MSDN:The default value of an enum E is the value produced by the expression (E)0.
http://msdn.microsoft.com/en-us/library/sbbt4032(v=vs.80).aspx
答案 2 :(得分:3)
没有办法,除非你使用Nullable<SomeEnum>
。
答案 3 :(得分:2)
您可以考虑将其设为可以为空的
答案 4 :(得分:2)
枚举的基础数据类型为int(默认情况下),就像int wi总是被初始化一样,枚举也是如此。
最好的办法是将未初始化的值添加为枚举中的第一个条目。
所以例如
public enum MyEnum{ Uninitialized, EnumValue1, EnumValue2, ... };
然后创建它的实例
MyEnum enumInstance;
现在它仍然会被初始化为枚举中的第一个元素,但你也知道它意味着你还没有初始化它。
答案 5 :(得分:0)
enum关键字用于声明枚举,这是一种由称为枚举器列表的命名常量组成的不同类型。
如果您希望在枚举中表示未知值,可以通过添加值为0的未知元素来实现。
您可以将该字段声明为Nullable< MyNullableEnum >
一个有用的链接: