Почему компилятор 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
существует. Почему он не проверяет «статичность»?