У меня есть одно сомнение относительно перегрузки и разрешения вызова C#.Почему C# вызывает разные для перегруженных методов для разных значений одного и того же типа?
Давайте предположим, что у меня есть следующий C# код:
enum MyEnum { Value1, Value2 }
public void test() {
method(0); // this calls method(MyEnum)
method(1); // this calls method(object)
}
public void method(object o) {
}
public void method(MyEnum e) {
}
Обратите внимание, что я знаю, как заставить его работать, но я хотел бы знать, почему для одного значения межд (0) вызывается один метод и для другой (1) он вызывает другого. Это звучит неловко, поскольку оба значения имеют один и тот же тип (int), но они «связаны» для разных методов.
Отличный первый вопрос! –
Он также относится к этому утверждению MyEnum e = 0; Но вы получите ошибку компилятора (требуется явное преобразование), если записать это MyEnum e = 1; – RockWorld
Дубликат http://stackoverflow.com/questions/1633168/why-does-c-3-allow-the-implicit-conversion-of-literal-zero-0-to-any-enum –