Default values for enums using the default keyword?
Anyone knows the default value for enums using the default keywords as in:
MyEnum myEnum = default(MyEnum);
Would it b开发者_C百科e the first item?
It is the value produced by (myEnum)0
. For example:
enum myEnum
{
foo = 100
bar = 0,
quux = 1
}
Then default(myEnum)
would be myEnum.bar
or the first member of the enum with value 0 if there is more than one member with value 0.
The value is 0
if no member of the enum is assigned (explicitly or implicitly) the value 0.
It's a bit hard to understand your question, but the default value for an enum is zero, which may or may not be a valid value for the enumeration.
If you want default(MyEnum)
to be the first value, you'd need to define your enumeration like this:
public enum MyEnum
{
First = 0,
Second,
Third
}
The expression default(T)
is the equivalent of saying (T)0
for a generic parameter or concrete type which is an enum
. This is true whether or not the enum
defines an entry that has the numeric value 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;
}
slapped this into vs2k10.....
with:
enum myEnum
{
a = 1,
b = 2,
c = 100
};
myEnum z = default(en);
produces: z == 0
which may or may not be a valid value of your enum (in this case, its not)
thus sayeth visual studio 2k10
精彩评论