Wednesday, September 24, 2014

Difference Between Var  & dynamic data type

VAR
  • Introduced in C# 3.0
  • Statically typed – This means the type of variable declared is decided by the compiler at compile time.
  • Need to initialize at the time of declaration.
    e.g., var str="string Type";
    Looking at the value assigned to the variable str, the compiler will treat the variable str as string.
  • 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.
  • Visual Studio shows intellisense since the type of variable assigned is known to compiler.
  • e.g., var Object2;

    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. var obj1=1;
    will compile
    var obj1="string Type";

    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.

Dynamic

  • Introduced in C# 4.0
  • Dynamically typed - This means the type of variable declared is decided by the compiler at runtime time.
  • No need to initialize at the time of declaration.
    e.g., dynamic strValue; 
    strValue=”String Type”; //Works fine and compiles
    strValue=100; //Works fine and compiles
  • 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
  • Intellisense is not available since the type and its related methods and properties can be known at run time only
    • e.g., dynamic object2; 
      will compile;
    • e.g., dynamic object2; 
      will compile and run
      dynamic object2="String Type";
  • 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. 

Hash Table in C#

 The Hashtable is a non-generic collection and used to store the key/value pairs based on the hash code of the key. Key will be used to acce...