Table of difference
var | dynamic |
Introduced in C# 3.0 | Introduced in C# 4.0 |
Statically typed – This means the type of variable declared is decided by the compiler at compile time. | Dynamically typed - This means the type of variable declared is decided by the compiler at runtime time. |
Need to initialize at the time of declaration. e.g. var str=”I am a string”; Looking at the value assigned to thevariable str , the compiler will treat the variable str as string | No need to initialize at the time of declaration. e.g. dynamic str; str=”I am a string”; //Works fine and compiles str=2;//Works fine and compiles |
Errors are caught at compile time. Since the compiler knows about the type and the methods and properties of the type at the compile time itself | Errors are caught at runtime Since the compiler comes to about the type and the methods and properties of the type at the run time. |
Visual Studio shows intellisense since the type of variable assigned is known to compiler. | Intellisense is not available since the type and its related methods and properties can be known at run time only |
e.g. var obj1; //will throw a compile error since the variable is not initialized. The compiler needs that this variable should be initialized so that it can infer a type from the value. | e.g. dynamic obj1; //will compile; |
e.g. var obj1=1; //will compile var obj1=” I am a string”;//will throw error since the compiler has already decided that the type of obj1 is System.Int32 when the value 1 was assigned to it. Now assigning a string value to it violates the type safety. | e.g. dynamic obj1=1; //will compile and run dynamic obj1=” I am a string”;//will compile and run since the compiler creates the type for obj1 as System.Int32 and then recreates the type as string when the value “I am a string” was assigned to it. This code will work fine. |
No comments:
Post a Comment