Bu blog gönderme sizin için yararlı olabilir: Özellikle http://blogs.msdn.com/b/cburrows/archive/2010/04/01/errata-dynamic-conversions-and-overload-resolution.aspx
: "dinamik argüman olan bir yöntem çağrısı varsa, dinamik dönemini gönderilir." Bu, C# çalışma zamanına kadar hangi aşırı yükün çağrıldığını bilmediği anlamına gelir. Derleme zamanında bilmiyor. Benim anladığım kadarıyla, kontrolünü, olası aşırı yüklerin derleme zamanında ne olduğunu (neden olsun?), Ya da sizin durumunuzda tüm ipleri döndürdüğünü not edin.
Yani derleme zamanında, Foo
dönüş değeri bilinmemektedir. Bu nedenle x
tipi, dynamic
olmak üzere derleme zamanında belirlenir.
Yalnızca bir "Hashtable" döndüren tek bir 'Foo 'işleviniz varsa ne olur? Derleyici, geri dönüş değeri olarak ne geri döneceğini önceden bilmez. Sonuçta anında "Foo" için uygulama oluşturmuş olabilirsiniz (çalışma zamanında). –
@Hamish Grubijan, 'Foo' işlevini çağırdığınızda derleyici derleme zamanında hangi işlevin çağrıldığını bilir. Bu işlevi statik yapmayı deneyin, F12'ye basın ve doğrudan doğru işleve gidecektir. –
@Darin, bunu neden statik yapmak fark yaratıyor? –