me he encontrado con esto varias veces en la última semana, y estoy curioso por saber la razón - que tenía un google, pero no pudo encontrar nada directamente relevante.sobrecarga estática + Método dinámico falla
tengo una clase con un método dinámico, y puedo añadir un método estático con la misma interfaz:
public class MyClass
{
public int MyMethod()
{
//do something #1;
}
public static int MyMethod()
{
//do something
}
}
Esto está muy bien, pero si trato de llamar al método estático del método dinámico, reemplazando # 1 con return MyClass.MyMethod()
, aparece un error "La llamada es ambigua entre los siguientes métodos o propiedades: MyClass.MyMethod() y MyClass.MyMethod().
Si se elimina el método estático, el error cambia a" Un objeto se requerirá la referencia .. ", lo cual tiene sentido.
Por qué es esto ambigu ¿ous? Ha sido prologado con el nombre de la clase para especificar el método estático, que funciona desde cualquier otro lugar en el código.
¿Por qué no aquí?
EDIT: No había intentado en realidad compilarlo sin el método dinámico llamando al estático, simplemente había pasado por VS sin subrayarlo.
Pero sigue siendo una pregunta similar, pero supongo que con un añadido "¿Por qué no puede haber tanto, como uno es estático, y uno no"
es el código dado compilar para usted? Lanza el error CS0111 para mí (ya define un miembro llamado 'MyMethod' con los mismos tipos de parámetros). – prashanth
Eso es un mensaje de error impar (incorrecto), pero es probable que sólo por el orden en que el compilador intenta resolver y verificar la referencia. – McGarnagle
@prashanth Estás en lo correcto. Había hecho una suposición - ver edición. – 3Pi