var
स्थैतिक टाइप किया गया है - संकलक और रनटाइम प्रकार जानते हैं - वे बस आपको कुछ टाइपिंग बचाते हैं ... निम्नलिखित 100% समान हैं:
var s = "abc";
Console.WriteLine(s.Length);
तथा
string s = "abc";
Console.WriteLine(s.Length);
जो कुछ भी हुआ वह यह था कि संकलक को पता चला कि s
एक स्ट्रिंग होना चाहिए (शुरुआती से)। दोनों मामलों में, यह जानता है (आईएल में) जिसका s.Length
अर्थ है (उदाहरण) string.Length
संपत्ति।
dynamic
एक बहुत अलग जानवर है; यह सबसे अधिक समान है object
, लेकिन गतिशील प्रेषण के साथ:
dynamic s = "abc";
Console.WriteLine(s.Length);
यहाँ, डायनामिकs
टाइप किया गया है । इसके बारे में पता नहीं है string.Length
, क्योंकि यह संकलन के समय के बारे में कुछ भी नहीं जानता हैs
। उदाहरण के लिए, निम्नलिखित संकलन (लेकिन नहीं चलाया जाएगा):
dynamic s = "abc";
Console.WriteLine(s.FlibbleBananaSnowball);
क्रम (केवल) में, यह होगा की जांच के लिए FlibbleBananaSnowball
संपत्ति - यह पता लगाने के लिए असफल, और स्पार्क्स की बौछार में विस्फोट।
साथ dynamic
, गुण / तरीकों / ऑपरेटरों / आदि हल कर रहे हैं क्रम में वास्तविक वस्तु पर आधारित है,। COM से बात करने के लिए बहुत आसान (जिसमें रनटाइम-केवल गुण हो सकते हैं), DLR, या अन्य गतिशील सिस्टम, जैसे javascript
।