¿Por qué C # permite llamadas a funciones ambiguas a través de argumentos opcionales?

Me encontré con esto hoy y me sorprende no haberlo notado antes. Dado un programa simple de C # similar al siguiente:

public class Program
{
    public static void Main(string[] args)
    {
        Method(); // Called the method with no arguments.
        Method("a string"); // Called the method with a string.

        Console.ReadLine();
    }

    public static void Method()
    {
        Console.WriteLine("Called the method with no arguments.");
    }

    public static void Method(string aString = "a string")
    {
        Console.WriteLine("Called the method with a string.");
    }
}

Obtiene el resultado que se muestra en los comentarios para cada llamada al método.

Entiendo por qué el compilador elige las sobrecargas que hace, pero ¿por qué se permite esto en primer lugar? No estoy preguntando cuáles son las reglas de resolución de sobrecarga, las entiendo, pero estoy preguntando si hay una razón técnica por la cual el compilador permite ¿qué son esencialmente dos sobrecargas con la misma firma?

Por lo que puedo decir, una sobrecarga de funciones con una firma que difiere de otra sobrecarga solo por tener un argumento opcional adicional no ofrece nada más de lo que lo haría si el argumento (y todos los argumentos anteriores) fueran simplemente necesarios.

Una cosa que hace es hacer posible que un programador (que probablemente no está prestando suficiente atención) piense que está llamando una sobrecarga diferente a la que realmente es.

Supongo que es un caso bastante poco común, y la respuesta de por qué esto está permitido puede ser simplemente porque simplemente no vale la pena la complejidad de no permitirlo, pero hay otra razón por la cual C # permite que las sobrecargas de funciones difieran de otras solo por tener un opcional adicional ¿argumento?

Respuestas a la pregunta(3)

Su respuesta a la pregunta