c# null ambiguous-call

c# - ¿Cómo resolver la ambigüedad cuando el argumento es nulo?



null ambiguous-call (6)

Debería poder lanzar nulo a cualquiera de ellos, al igual que lo haría con una variable Func((Class1)null) .

The call is ambiguous between the following methods or properties devolverá la compilación del siguiente código. The call is ambiguous between the following methods or properties error de The call is ambiguous between the following methods or properties . ¿Cómo resolverlo ya que no puedo convertir explícitamente null a ninguna de esas clases?

static void Main(string[] args) { Func(null); } void Func(Class1 a) { } void Func(Class2 b) { }


Emitir null al tipo:

Func((Class1)null);


Los métodos Func() aceptan un tipo de referencia como parámetro, que puede ser nulo. Dado que está llamando al método con un valor null explícito, el compilador no sabe si su nulo se supone que es en referencia a un objeto de Class1 o un objeto de Class2 .

Tienes dos opciones:

Emitir el valor nulo para el tipo Class1 o Class2 , como en Func((Class1)null) o Func((Class2)null)

Proporcione una nueva sobrecarga del método Func() que no acepta parámetros, y llame a esa sobrecarga cuando no tenga una referencia de objeto explícita:

void Func() { // call this when no object is available }


También puedes usar una variable:

Class1 x = null; Func(x);


Func((Class1)null);


Usando as para el casting lo hace un poco más legible con la misma funcionalidad.

Func(null as Class1);