4

Anyone knows the default value for enums using the default keywords as in:

MyEnum myEnum = default(MyEnum);

Would it be the first item?

4 Answers 4

5

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.

Sign up to request clarification or add additional context in comments.

5 Comments

Thanks, but what if there is no 0 defined? But they were 100, 99 and 1?
Then it is 0. I updated my answer accordingly. See related thread: stackoverflow.com/questions/529929/…
If there's no 0 defined, the value is still 0. Remember than an enum is really just a thin typesafe wrapper around an integral type, giving you the ability to reference integral values by name.
Thanks, so if there is no enum 0, you mean the value assigned really be 0 as in int (0)?
@Jim: got it now from your comment.
2

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
}

Comments

2

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

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.