Почему компилятор С# не говорит, что этот фрагмент кода недействителен?
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
. Почему он не проверяет "статичность"?