6

Out of curiosity, why is Log(null) not an ambiguous call in this scenario?

class Program
{
    static void Main(string[] args)
    {
        Log(null); // Output is "String"
    }

    static void Log(object value)
    {
        Console.WriteLine("Object");
    }

    static void Log(string value)
    {
        Console.WriteLine("String");
    }
}

As both Log(object) and Log(string) accepts null as parameter I was expecting the compiler to give me an ambiguous call error, but instead it chooses to call Log(string). Why not Log(object)?

Ulf Kristiansen
  • 1,571
  • 3
  • 22
  • 34

0 Answers0