Это четко указано в спецификации языка, раздел 6.1.3 Неявные преобразования перечисления (выделено мной):
Неявное преобразование перечисления разрешает десятичное целое-литеральное
0 для преобразования в любой перечислимый тип и в любой обнуляемый тип,
базовый тип является типом перечисления. В последнем случае конверсия
оценивается путем преобразования в базовый тип enum и переноса
результат
Таким образом, только литерал 0
может быть неявно преобразован в любое перечисление, не 1
, не 2
, только 0
.
Это можно продемонстрировать, сняв перегрузку, которая занимает Object
, Test(1)
не сможет скомпилироваться.
Относительно того, почему язык спроектирован таким образом , вам придется спросить дизайнеров языка.