为什么C#编译器不告诉我这段代码无效?
class Program
{
static void Main(string[] args)
{
dynamic d = 1;
MyMethod(d);
}
public void MyMethod(int i)
{
Console.WriteLine("int");
}
}
Run Code Online (Sandbox Code Playgroud)
调用MyMethod在运行时失败,因为我试图从静态方法调用非静态方法.这是非常合理的,但为什么编译器在编译时不认为这是一个错误?
以下内容无法编译
class Program
{
static void Main(string[] args)
{
dynamic d = 1;
MyMethod(d);
}
}
Run Code Online (Sandbox Code Playgroud)
所以尽管动态调度,编译器会检查是否MyMethod存在.为什么不验证"静态"?