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