Ответ 1
Нет, к сожалению, нет.
Перечисления на С# - это просто номера с именами, на самом деле - нет никакой проверки. Я согласен, было бы очень приятно видеть это, а также перечисления с поведением (например, на Java). Я ничего не слышал, чтобы предположить, что это произойдет в ближайшее время: (
Обратите внимание, что значение по умолчанию для типа всегда будет значением, представленным "всеми нулевыми битами" - нет способа обойти это внутри системы типов. Поэтому либо вам нужно сделать это разумным значением по умолчанию, либо вам придется явно протестировать его даже в проверяющей системе (например, тестирование против null для ссылочных типов).
Чтобы быть ясным, я считаю, что есть времена, когда имеет смысл иметь тип имен для чисел... но я думаю, что действительно более ограниченный набор значений будет еще более полезен.