What is the difference between dynamic, var and object types?

  • object type is a base type for all the types in c#.
  • object type used to box primary types.
  • var helps when the type of the variable is not known at compile type.
  • var needs to be initialized.
  • dynamic creates dynamic variables which are not strongly typed.
  • type resolution of dynamic is delayed until runtime. This might cause runtime exceptions, if dynamic variables are called on invalid terms.
object a;
dynamic c;
var b = 15;

a = 100; // int boxed into Integer type
c = "foo"; // c is a string but intellisense doesn't work

b += b; // integer add
c = c * 100; // multiplication - no compilation error

Console.WriteLine($"{a}, {b}, {c}");

output:
Unhandled exception. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Operator '*' cannot be applied to operands of type 'string' and 'int'
  • object type is a base type for all the types in c#.
  • object type used to box primary types.
  • var helps when the type of the variable is not known at compile type.
  • var needs to be initialized.
  • dynamic creates dynamic variables which are not strongly typed.
  • type resolution of dynamic is delayed until runtime. This might cause runtime exceptions, if dynamic variables are called on invalid terms.
object a;
dynamic c;
var b = 15;

a = 100; // int boxed into Integer type
c = "foo"; // c is a string but intellisense doesn't work

b += b; // integer add
c = c * 100; // multiplication - no compilation error

Console.WriteLine($"{a}, {b}, {c}");

output:
Unhandled exception. Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Operator '*' cannot be applied to operands of type 'string' and 'int'
Default image
Sriram Mannava

I'm a full-stack developer and a software enthusiast who likes to play around with cloud and tech stack out of curiosity.

Leave a Reply