Tengo una duda sobre la sobrecarga del método C# y la resolución de llamadas.¿Por qué las llamadas C# son diferentes para métodos sobrecargados para diferentes valores del mismo tipo?
Supongamos que tengo el siguiente código 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) {
}
Nota que sé cómo hacer que funcione, pero me gustaría saber por qué para un valor de int (0) se llama a un método y para otro (1) llama a otro. Suena incómodo ya que ambos valores tienen el mismo tipo (int) pero están "vinculados" para diferentes métodos.
¡Excelente primera pregunta! –
Se aplica a esta declaración también MyEnum e = 0; Pero obtendrá un error del compilador (se requiere una conversión explícita) si escribe esto MyEnum e = 1; – RockWorld
Duplicado de http://stackoverflow.com/questions/1633168/why-does-c-3-allow-the-implicit-conversion-of-literal-zero-0-to-any-enum –