var
statik yazılır - derleyici ve çalışma zamanı türü bilir - sadece bazı yazarak kaydederler ... aşağıdakiler% 100 aynıdır:
var s = "abc";
Console.WriteLine(s.Length);
ve
string s = "abc";
Console.WriteLine(s.Length);
Oldu ki tüm olmasıydı derleyici anladım s
(başlatıcısı itibaren) bir dize olmalıdır. Her iki durumda da (IL'de) bunun s.Length
(örnek) string.Length
özelliği anlamına geldiğini bilir .
dynamic
a, çok farklı bir hayvan; en çok benzeyen object
, ancak dinamik gönderimle:
dynamic s = "abc";
Console.WriteLine(s.Length);
Burada dinamik olaraks
yazılır . Yaklaşık bilmez o bilmediği için, herhangi bir şey hakkında derleme zamanında. Örneğin, aşağıdakiler de derlenir (ancak çalıştırılmaz):string.Length
s
dynamic s = "abc";
Console.WriteLine(s.FlibbleBananaSnowball);
Çalışma zamanında (yalnızca), özelliği kontrol eder FlibbleBananaSnowball
- bulamaz ve kıvılcım duşunda patlayabilir.
İle dynamic
, özellikler / yöntemler / işleçler / vb . Çalışma zamanında gerçek nesneye göre çözümlenir . COM (yalnızca çalışma zamanı özelliklerine sahip olabilen), DLR veya diğer dinamik sistemlerle konuşmak için çok kullanışlıdır javascript
.