kullanıyorsanız Her zamanda tipi nesnesinin param yapabilir, bu derleyici bunu yapıyor. Bir parametre dinamiği yazdığınızda, sadece bu metot içinde sadece paramın tüm kullanımları için dinamik invoke kullanıyor demektir, fakat bunun dışında sadece bir tip nesnenin imzasıdır. DynamicObject öğesinin daha güçlü bir kullanımı, aradığınız yöntemin aşırı yüklenmesine sahip olmaktır. Bu nedenle, örneğinizi aynı tutarsanız ve yalnızca iki aşırı yüklenme varsa, çalışma zamanı türüne göre iki yöntemden birini çağırırsınız ve her zaman daha fazla tür için daha fazla ekleyin.
public void Main() {
dynamic dynamicObject = 33;
if(true) { // Arbitrary logic
dynamicObject = null;
}
Method(dynamicObject);
}
public void Method(int param) {
//don't have to check check null
//only called if dynamicObject is an int
}
public void Method(object param) {
// will be called if dynamicObject is not an int or null
}
+1 Elbette. – Ani
@Ani rağmen 'Object.' kaybedebilirsiniz ne 'orada oraya ne olduğundan emin değilim. – JaredPar
Sadece “ReferenceEquals” yazabilirsiniz (boş, param). Bu konuyla ilgili 5 sorudan, SO'nun bunu basitçe çözmediğine inanamıyorum. –