Kode berikut memiliki metode statis, Foo()
, memanggil metode contoh, Bar()
:
public sealed class Example
{
int count;
public static void Foo( dynamic x )
{
Bar(x);
}
void Bar( dynamic x )
{
count++;
}
}
Ini mengkompilasi tanpa kesalahan * tetapi menghasilkan pengecualian pengikat runtime pada saat runtime. Menghapus parameter dinamis ke metode ini menyebabkan kesalahan kompiler, seperti yang diharapkan.
Jadi mengapa memiliki parameter dinamis memungkinkan kode untuk dikompilasi? ReSharper juga tidak menampilkannya sebagai kesalahan.
Edit 1: * dalam Visual Studio 2008
Edit 2: ditambahkan sealed
karena ada kemungkinan subclass dapat berisi Bar(...)
metode statis . Bahkan versi tersegel dapat dikompilasi ketika tidak mungkin metode apa pun selain metode instance dapat dipanggil saat runtime.
dynamic
kecuali Anda benar-benar perlu.