我需要有一个枚举类型变量不会自动初始化为第一个元素的值。 有没有办法如何做到这一点?枚举变量总是初始化?
2
A
回答
3
没办法,除非你用Nullable<SomeEnum>
。
2
你可以考虑将它可为空
2
枚举为int(默认)的基本数据类型,就像一个int无线总是被初始化,所以将枚举。
最好的办法是将未初始化的值作为enum中的第一个条目添加。
因此,例如
public enum MyEnum{ Uninitialized, EnumValue1, EnumValue2, ... };
然后创建它的
MyEnum enumInstance;
现在,它仍然会被初始化为在枚举的第一个元素一个实例,但你也知道,它意味着你有尚未初始化它。
0
enum关键字用于声明一个枚举类型,这是一个由称为枚举数列表的一组命名常量组成的独特类型。
如果你想在枚举表示未知值,你可以通过添加元素与未知值0
你可以声明栏为Nullable<MyNullableEnum>
一个有用的链接做到这一点:
6
枚举变量不总是被初始化为头伏枚举的线索。对于实例/静态变量,它们被初始化为枚举的“0”值 - 它可能不是一个命名值,例如,
enum Color
{
Red = 1,
Blue = 2,
Green = 3
}
Color c; // This will be 0
局部变量不会被自动初始化 - 他们必须在他们可以读第一点之前明确赋值,就像任何其他变量。
你不是很清楚你想达到什么 - 如果你可以提供更多关于背景的细节,那将会有很大的帮助。例如,使用可为空的值类型可能是,或者您可能只是想在构造函数中强制初始化。
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
相关问题
- 1. 未初始化的枚举变量值
- 2. 混淆枚举初始化
- 3. 初始化C#DayOfWeek枚举
- 4. 在枚举中进行变量初始化,或者在编译时阻止缺少枚举的枚举
- 5. 变量是枚举
- 6. 枚举初始化后声明
- 7. 覆盖枚举元类初始化
- 8. 如何初始化一个枚举?
- 9. 使用枚举值初始化BindingList
- 10. 枚举不初始化正确的值
- 11. C#显式初始化为枚举
- 12. 错误枚举与静态初始化
- 13. 在枚举中初始化列表
- 14. 初始化枚举一个空值
- 15. 变量初始化?
- 16. 初始化变量
- 17. 初始化变量
- 18. 变量初始化
- 19. 变量初始化
- 20. 初始化变量
- 21. 初始化变量
- 22. 初始化变量
- 23. 为什么Java枚举常量初始化不完整?
- 24. 如何初始化枚举类型的公共变量类在C++编译时
- 25. 初始化变量的初始化是否正确?
- 26. 通过枚举方式的单例是懒惰初始化的?
- 27. 正在初始化一个未初始化变量的变量是否合法?
- 28. 为什么12位未初始化的int变量总是0xff0?
- 29. ASMX Web服务的成员变量总是重新初始化
- 30. 从另一个泛型枚举初始化一个通用的Swift枚举?