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 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.
|
Tuesday, 26 August 2014
Difference between var and dynamic
Labels:
General C#
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment