| 
 var | 
dynamic | 
| 
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 the variable 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.  | 
Monday, 17 April 2017
Difference between var and dynamic in C#
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment