C# 使用默认关键字的枚举的默认值?
任何人都知道使用默认关键字的枚举的默认值,如中所示:C# 使用默认关键字的枚举的默认值?,c#,.net,enums,C#,.net,Enums,任何人都知道使用默认关键字的枚举的默认值,如中所示: MyEnum myEnum = default(MyEnum); 它会是第一项吗?它是由(myEnum)0产生的值。例如: enum myEnum { foo = 100 bar = 0, quux = 1 } 然后,default(myEnum)将是myEnum.bar,或者如果有多个成员的值为0,则是枚举的第一个值为0的成员 如果没有为枚举成员(显式或隐式)分配值0,则该值为0。您的问题有点难以理解,但枚举的默认值为零,这
MyEnum myEnum = default(MyEnum);
它会是第一项吗?它是由
(myEnum)0产生的值。例如:
enum myEnum
{
foo = 100
bar = 0,
quux = 1
}
然后,default(myEnum)
将是myEnum.bar
,或者如果有多个成员的值为0,则是枚举的第一个值为0的成员
如果没有为枚举成员(显式或隐式)分配值0,则该值为0
。您的问题有点难以理解,但枚举的默认值为零,这可能是枚举的有效值,也可能不是
如果希望default(MyEnum)
作为第一个值,则需要如下定义枚举:
public enum MyEnum
{
First = 0,
Second,
Third
}
表达式default(T)
相当于表示作为枚举的泛型参数或具体类型的(T)0
。无论enum
是否定义了数值为0的条目,这都是正确的
enum E1 {
V1 = 1;
V2 = 2;
}
...
E1 local = default(E1);
switch (local) {
case E1.V1:
case E1.V2:
// Doesn't get hit
break;
default:
// Oops
break;
}
将此插入vs2k10
与:
生成:z==0
,它可能是或不是枚举的有效值(在本例中,它不是)
因此,visual studio 2k10表示感谢,但如果没有定义0呢?但他们分别是100、99和1?然后是0。我相应地更新了我的答案。请参阅相关线程:如果没有定义0,则该值仍然为0。请记住,枚举实际上只是一个围绕整数类型的薄型类型安全包装,使您能够按名称引用整数值。谢谢,如果没有枚举0,您的意思是分配的值实际上是0,如int(0)?@Jim:现在从您的评论中获得了它。
enum myEnum
{
a = 1,
b = 2,
c = 100
};
myEnum z = default(en);