Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用默认关键字的枚举的默认值?_C#_.net_Enums - Fatal编程技术网

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);