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(...)
。インスタンス メソッド以外のメソッドを実行時に呼び出すことができない場合は、封印されたバージョンでもコンパイルされます。