Joan Venge
Joan Venge

Reputation: 331062

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 be the first item?

Upvotes: 4

Views: 1529

Answers (4)

Richard Cook
Richard Cook

Reputation: 33089

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.

Upvotes: 5

Muad'Dib
Muad'Dib

Reputation: 29216

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

Upvotes: 0

JaredPar
JaredPar

Reputation: 754763

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

Upvotes: 2

Bennor McCarthy
Bennor McCarthy

Reputation: 11675

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
}

Upvotes: 2

Related Questions