Latest

random

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.

difference between,var and dynamic,Tutorial, C# 3.0,C 4.0



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 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 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.



2 comments:

All Rights Reserved by Etechpulse © 2015 - 2016
Powered By Blogger

Contact Form

Name

Email *

Message *

Powered by Blogger.