C# - What is the basic difference between var and dynamic keyword?
C# - Difference between var and dynamic
In this post I will explain the difference between var and dynamic keyword in C#. Variables declared with var are implicitly but statically typed. Variables declared with dynamic are dynamically typed.
var keyword
|
dynamic keyword
|
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 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 intelligence since the type of variable assigned is known to
compiler.
|
Intelligence
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 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 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.
|
C# - What is the basic difference between var and dynamic keyword?
Reviewed by Ravi Kumar
on
3:33 PM
Rating:

Very nice information.
ReplyDeleteThank you sir .. !!
ReplyDelete