Почему компилятор c # не проверяет «статичность» метода на сайтах вызовов с динамическим аргументом?

Почему компилятор C # не сообщает мне, что этот фрагмент кода недействителен?

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }

    public void MyMethod(int i) 
    {
        Console.WriteLine("int");
    }
}

Призыв кMyMethod не удается во время выполнения, потому что я пытаюсь вызвать нестатический метод из статического метода. Это очень разумно, но почему компилятор не считает это ошибкой во время компиляции?

Следующее не скомпилирует

class Program
{
    static void Main(string[] args)
    {
        dynamic d = 1;
        MyMethod(d);
    }
}

поэтому, несмотря на динамическую диспетчеризацию, компилятор проверяет, чтоMyMethod существует. Почему он не проверяет «статичность»?

Ответы на вопрос(2)

Ваш ответ на вопрос