Просто из любопытства: почему я могу присвоить 0.0 переменной, которая имеет тип перечисления, но не 1.0? Посмотрите на следующий код:
public enum Foo
{
Bar,
Baz
}
class Program
{
static void Main()
{
Foo value1 = 0.0;
Foo value2 = 1.0; // This line does not compile
Foo value3 = 4.2; // This line does not compile
}
}
Я думал, что конверсии между численными типами и значениями перечисления разрешены только с помощью бросков? То есть я мог бы написать Foo value2 = (Foo) 1.0;
, так что строка 2 в Main
может компилироваться. Почему существует исключение для значения 0.0
в С#?