What is the default value for enum variable?

.net, c#, enums

Solution

It is whatever member of the enumeration represents the value `0`. Specifically, from the documentation:

The default value of an `enum E` is the value produced by the expression `(E)0`.

As an example, take the following enum:

enum E
{
    Foo, Bar, Baz, Quux
}

Without overriding the default values, printing `default(E)` returns `Foo` since it's the first-occurring element.

However, it is not always the case that `0` of an enum is represented by the first member. For example, if you do this:

enum F
{
    // Give each element a custom value
    Foo = 1, Bar = 2, Baz = 3, Quux = 0
}

Printing `default(F)` will give you `Quux`, not `Foo`.

If none of the elements in an enum `G` correspond to `0`:

enum G
{
    Foo = 1, Bar = 2, Baz = 3, Quux = 4
}

`default(G)` returns literally `0`, although its type remains as `G` (as quoted by the docs above, a cast to the given enum type).

Problem

An enum variable, anyone know if it is always defaulting to the first element?

Original source