Table of difference
|
var |
dynamic |
|
Introduced
inC#
3.0 |
Introduced
inC#
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. |
|
Needto
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 variablestras
string. |
Noneedto
initialize at the time of declaration. e.g., dynamic
str;str=”I
am a string”;//Works
fine and compilesstr=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 intellisensesince
the type of variable assigned is known to compiler. |
Intellisense
is not availablesince
the type and its related methods and properties can be known at
run time only |
|
e.g., var
obj1;willthrow a compile errorsince 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 errorsince 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 runsince 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