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 variablestr as
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