|
|
Yayınlandı 7.07.2016 10:15:06
|
|
|

dinamik, FrameWork 4.0'ın yeni bir özelliğidir. Dinamikin ortaya çıkışı, C#'a zayıf bir dil tipinin özelliklerini kazandırmıştır. Derleyici artık derleme zamanında tipi kontrol etmez ve dinamik nesne, derleme zamanı varsayılan olarak istediğiniz herhangi bir özelliği destekler. Örneğin, GetDynamicObject metodunun döndürdüğü nesne hakkında hiçbir bilginiz olmasa bile, böyle bir kod çağrısı yapabilirsiniz ve derleyici hata bildirmez:
Doğru kullanım söz konusu olduğunda, önce bir yanlış kullanım belirtilmelidir:
İnsanlar genellikle dinamik ile karşılaştırmak için var anahtar kelimesini kullanır. Aslında, var ve dinamik tamamen iki kavramdır ve hiç birlikte karşılaştırılmamalıdır. Derlendikten sonra, derleme süresi var değişkeninin gerçek tipiyle otomatik olarak eşleşir ve değişkenin bildirisini gerçek tiple değiştirir; bu da kodlama sırasında gerçek tipi ilan ediyormuş gibi görünür. Dinamik derlendikten sonra aslında bir nesne tipi olur, ancak derleyici dinamik tipe özel bir yaklaşım gösterir; böylece derleme sırasında herhangi bir tür kontrolü yapmaz, sadece tür kontrolünü çalışma zamanına koyar.
Bu, Visual Studio'daki editör penceresinde görülebilir. VAR olarak ilan edilen değişkenler "akıllı algı"yı destekler çünkü Visual Studio var türlerinin gerçek türünü çıkarabilirken, dinamik olarak ilan edilen değişkenler "akıllı algı"yı desteklemez çünkü derleyici çalışma zamanının türü hakkında hiçbir şey bilmez. Dinamik değişkenler için Intelligent Sense kullanmak "Bu eylem çalışma zamanında çözülecek" diye soruyor.
Dinamik değişkenin bir nesne değişkeni olması IL kodu ile doğrulanabilir ve IL kodu burada paylaşılmaz. Elbette, derleyici ayrıca doğrudan nesne değişkenlerini ayırt etmek için dinamik bildirimleri de işliyor.
dinamik, MSDN'de birlikte çalışabilirliği basitleştirmek için yaygın olarak işleniliyor ve bazı geliştiricilerin yanlış anlaşılmasının buna dayandığını düşünüyorum: çünkü birçok geliştirici COM+ ve OFFICE ikincil geliştirme gibi kodlamaları nasıl kullanacağını bilmediği için, acilen dinamik bir uygulama nedenine ihtiyaçları var. Günlük gelişimde, dinamikin değerli olduğunu düşünüyorum:
Tip dönüşümü Dinamik tip örnekler ile diğer örnek türleri arasında geçiş yapmak basittir ve geliştiriciler dynmic ve dinamik olmayan davranışlar arasında kolayca geçiş yapabilir. Herhangi bir örnek örtük olarak dinamik tip bir örneğine dönüştürülebilir, aşağıdaki örneğe bakınız: dinamik d1 = 7; dinamik d2 = "bir dize"; dinamik d3 = System.DateTime.Today; dinamik d4 = System.Diagnostics.Process.GetProcesses(); Buna karşılık, örtük dönüşüm herhangi bir tür dinamiğine dinamik olarak uygulanabilir. Ve tam tersi ise, herhangi bir tip dinamiği ifadesi örtük olarak diğer tiplere dönüştürülebilir. int i = d1; string str = d2; DateTime dt = d3; System.Diagnostics.Process[] procs = d4; Yöntemde dinamik tip parametreleriyle aşırı yük problemi Bir yöntem dinamiği tipli bir nesneyi geçiriyorsa veya çağrılan nesne tip dinamik ise, aşırı yük yargısı derleme zamanında değil, çalışma zamanında gerçekleşir. Dinamik dil çalışma zamanı DLR Dinamik dil çalışma zamanı. NET Framework 4 Beta 1, C#'da dinamik tipleri destekleyen ve ayrıca IronPython ile IronRuby gibi dinamik programlama dillerini uygulayan yeni bir API setidir. dinamik, yansımaları basitleştirir.
Daha önce şöyle yansımalar kullanıyorduk:
Şimdi yazmanın basitleştirilmiş bir yolu var:
Böyle basitleştirmeyi küçümsüyor olabiliriz, sonuçta kod çok fazla azaltılmamış gibi görünüyor, ancak verimlilik ve güzellik gibi iki özelliği dikkate alırsak, dinamikin avantajları açıktır. Derleyici, dinamiki önbelleksiz yansıtma verimliliğinden çok daha hızlı optimize eder. Karşılaştırmanız gerekirse, yukarıdaki iki kodun kodunu (Yöntem Ekle kısmı çağrısı) 1000000 için çalıştırarak bir sonuca varabilirsiniz.
|
Önceki:mvc, gönderi için JSON XML verilerini getirirÖnümüzdeki:Bir tanıma hatası meydana geldi. 1. Hattı yakınında, 10. sütun
|