Значение по умолчанию для целочисленной переменной равно 0. И поскольку базовый тип по умолчанию для каждого элемента перечисления - int
, представляющий целое число, значением по умолчанию для вашей переменной будет 0.
Документация делает это явным:
Значение по умолчанию для перечисления E - это значение, полученное выражением (E) 0.
Единственный способ получить другое значение по умолчанию - это явная инициализация его при объявлении переменной:
EnumLogicalOperator x = EnumLogicalOperator.Or;
Именно поэтому обычно рекомендуется , что 0соответствуют действительному элементу в вашем перечислении, поскольку это будет значением по умолчанию для всех переменных этого типа.
Кроме того, можно присвоить любое произвольное целочисленное значениепеременной, типизированной как enum. документация предупреждает:
Можно назначить любое произвольное целочисленное значение для meetingDay.Например, эта строка кода не выдает ошибку: meetingDay = (Days) 42. Однако не следует этого делать, поскольку неявное ожидание состоит в том, что переменная enum будет содержать только одно из значений, определенных перечислением.Присвоение произвольного значения переменной типа перечисления означает высокий риск ошибок.
И это еще яснее в Спецификации языка C # (в частности, в разделе 1.10 о перечислениях):
Набор значений, которые может принимать тип перечисления, не ограничен его членами перечисления.В частности, любое значение базового типа перечисления может быть приведено к типу перечисления и является отличным допустимым значением этого типа перечисления.
Именно поэтому очень важно, чтобы методы общедоступной платформы всегдаубедитесь, что указанное значение находится в диапазоне допустимых значений для этого перечисления.Вы не можете полагаться на систему проверки типов, чтобы гарантировать это для вас.Руководство по проектированию платформы рекомендует:
Выполнить проверку аргументов.Не предполагайте, что аргументы перечисления будут в определенном диапазоне.Допустимо преобразовывать любое целое число в перечисление, даже если оно не определено в перечислении.