Many developers are very confused about how to differentiate between var and dynamic keyword.
Let's try to understand.
Open a New Project Like:
![new]()
![console]()
var _string = "Amit Kumar";
![code]()
Here I defined a var type variable which contains string value.
And I want to get the length of this string here.
![length]()
![code]()
After that one more point here please pay attention (above screen shot) when we type the length property then it shows (local variable) string _string . It means _string is string data type. Due to this reason it is called early bounded .
Dynamic keyword:
![code]()
In the above snippet I defined dynamic type d and store “Abhishek” after that get the length of dynamic type variable d when we type d.length then you can see he does not know what is data type of d .
![code]()
Still it is not pointing out that it is string data type or other data type.
After that gets the name and length of dynamic data type shown like.
![code]()
![code]()
When we type d.Length, d is still here and we do not know whether d has length property or not; it dynamically (runtime)goes and uses reflexation and uses Length property.
Due to this reason dynamic is known as late bounded,
![code]()
When we typed d.length it brought exception because length is written with a small letter and it is not a property of string.
![code]()
Conclusion : Var is early bounded, dynamic is late bounded.