- 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'
Related