Compiling the following code will return The call is ambiguous between the following methods or properties
error. How to resolve it since I can\'t explicitly co
The Func()
methods accept a reference type as a parameter, which can be null. Since you're calling the method with an explicit null
value, the compiler doesn't know whether your null is supposed to be in reference to a Class1
object or a Class2
object.
You have two options:
Cast the null to either the Class1
or Class2
type, as in Func((Class1)null)
or Func((Class2)null)
Provide a new overload of the Func()
method that accepts no parameters, and call that overload when you don't have an explicit object reference:
void Func()
{
// call this when no object is available
}
Func((Class1)null);
You could also use a variable:
Class1 x = null;
Func(x);
You should be able to cast null to either of those, the same as you would a variable Func((Class1)null)
.
Cast null
to the type:
Func((Class1)null);
Just an alternative solution I prefer
static void Main(string[] args)
{
Func(Class1.NULL);
}
void Func(Class1 a)
{ }
void Func(Class2 b)
{ }
class Class1
{
public static readonly Class1 NULL = null;
}
class Class2
{
public static readonly Class2 NULL = null;
}