以下代码具有一个静态方法Foo()
,它调用实例方法Bar()
:
public sealed class Example
{
int count;
public static void Foo( dynamic x )
{
Bar(x);
}
void Bar( dynamic x )
{
count++;
}
}
它编译时没有错误*,但在运行时生成运行时绑定程序异常。如预期的那样,将动态参数删除到这些方法会导致编译器错误。
那么,为什么要使用动态参数才能编译代码?ReSharper也不将其显示为错误。
编辑1: *在Visual Studio 2008中
编辑2:已添加,sealed
因为子类可能包含静态Bar(...)
方法。当无法在运行时调用实例方法以外的其他任何方法时,即使是密封版本也可以编译。
dynamic
除非真正需要否则不应该使用的另一个示例。