Why switch for enum accepts implicit conversion to 0 but no for any other integer?

From ECMA-334 (C# Language Specification)

13.1.3 Implicit enumeration conversions

An implicit enumeration conversion permits the decimal-integer-literal
0 to be converted to any enum-type.

enum’s default value is 0 and at compile time it is known that is why it is allowed in the switch statement. For value other than 0, it can’t be determine at compile time whether this value will exist in the enum or not.

enum (C# Reference)

Assigning additional values new versions of enums, or changing the
values of the enum members in a new version, can cause problems for
dependant source code. It is often the case that enum values are
used in switch statements, and if additional elements have been added
to the enum type, the test for default values can return true
unexpectedly.

Leave a Comment