【发布时间】:2010-09-22 22:44:25
【问题描述】:
任何人都知道使用默认关键字的枚举的默认值,如下所示:
MyEnum myEnum = default(MyEnum);
它会是第一个项目吗?
【问题讨论】:
任何人都知道使用默认关键字的枚举的默认值,如下所示:
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) 相当于为泛型参数或具体类型enum 说(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 中.....
与:
enum myEnum
{
a = 1,
b = 2,
c = 100
};
myEnum z = default(en);
产生:z == 0,它可能是也可能不是您的枚举的有效值(在这种情况下,它不是)
这样说视觉工作室 2k10
【讨论】: