Eventuali duplicati:
C#: Passing null to overloaded method - which method is called?domanda CLR. Perché l'overloading di metodo in C# decide che null è una stringa?
Ecco un banco di prova
object a = null;
var b = Convert.ToString (null);
var c = Convert.ToString (a);
string d = Convert.ToString (null); // CLR chooses Convert.ToString(string value)
string e = Convert.ToString (a); // CLR chooses Convert.ToString(object value)
La domanda è perché CLR decide che nulla viene interpretata come stringa nel primo caso? Sembra che questa domanda abbia già risposto here
Ecco un altro caso simile. Nessuno di questi IFS vengono attivate
object x = null;
if (x is object)
{
Console.Write ("x is object");
}
if (x is string)
{
Console.Write ("x is string");
}
if (null is object)
{
Console.Write ("null is object");
}
if (null is string)
{
Console.Write ("null is string");
}
Possibile duplicato: http://stackoverflow.com/questions/719546/c-passing-null-to-overloaded-method-which-method-is-called – CMS
Suppongo che aspettiamo fino a quando Jon Skeet si sveglia e ci illumina su questo –
Ha già, sul link che CMS ha pubblicato. –