Dynamic Type in C#

10 Apr, 2019
In C# 4.0, a new type is introduced that is known as a dynamic type. It is used to avoid the compile-time type checking. The compiler does not check the type of the dynamic type variable at compile time, instead of this, the compiler gets the type at the run time. The dynamic type variable is created using dynamic keyword.
Example:
dynamic value = 123;
Important Points:
In most of the cases, the dynamic type behaves like object types.
You can get the actual type of the dynamic variable at runtime by using GetType() method. The dynamic type changes its type at the run time based on the value present on the right-hand side. As shown in the below example.Example:// C# program to illustrate how to get the// actual type of the dynamic type variableusing System;  class GFG {      // Main Method    static public void Main()    {          // Dynamic variables        dynamic value1 = "GeeksforGeeks";        dynamic value2 = 123234;        dynamic value3 = 2132.55;        dynamic value4 = false;          // Get the actual type of         // dynamic variables        // Using GetType() method        Console.WriteLine("Get the actual type of value1: {0}",                                  value1.GetType().ToString());          Console.WriteLine("Get the actual type of value2: {0}",                                  value2.GetType().ToString());          Console.WriteLine("Get the actual type of value3: {0}",                                  value3.GetType().ToString());          Console.WriteLine("Get the actual type of value4: {0}",                                   value4.GetType().ToString());    }}Output:Get the actual type of value1: System.String
Get the actual type of value2: System.Int32
Get the actual type of value3: System.Double
Get the actual type of value4: System.Boolean

Example:
// C# program to illustrate how to get the// actual type of the dynamic type variableusing System;  class GFG {      // Main Method    static public void Main()    {          // Dynamic variables        dynamic value1 = "GeeksforGeeks";        dynamic value2 = 123234;        dynamic value3 = 2132.55;        dynamic value4 = false;          // Get the actual type of         // dynamic variables        // Using GetType() method        Console.WriteLine("Get the actual type of value1: {0}",                                  value1.GetType().ToString());          Console.WriteLine("Get the actual type of value2: {0}",                                  value2.GetType().ToString());          Console.WriteLine("Get the actual type of value3: {0}",                                  value3.GetType().ToString());          Console.WriteLine("Get the actual type of value4: {0}",                                   value4.GetType().ToString());    }}
Output:
Get the actual type of value1: System.String
Get the actual type of value2: System.Int32
Get the actual type of value3: System.Double
Get the actual type of value4: System.Boolean

When you assign a class object to the dynamic type, then the compiler does not check for the right method and property name of the dynamic type which holds the custom class object.
You can also pass a dynamic type parameter in the method so that the method can accept any type of parameter at run time. As shown in the below example.Example:// C# program to illustrate how to pass// dynamic type parameters in the methodusing System;  class GFG {      // Method which contains dynamic parameters    public static void addstr(dynamic s1, dynamic s2)    {        Console.WriteLine(s1 + s2);    }      // Main method    static public void Main()    {          // Calling addstr method        addstr("G", "G");        addstr("Geeks", "forGeeks");        addstr("Cat", "Dog");        addstr("Hello", 1232);        addstr(12, 30);    }}Output:GG
GeeksforGeeks
CatDog
Hello1232
42

Example:
// C# program to illustrate how to pass// dynamic type parameters in the methodusing System;  class GFG {      // Method which contains dynamic parameters    public static void addstr(dynamic s1, dynamic s2)    {        Console.WriteLine(s1 + s2);    }      // Main method    static public void Main()    {          // Calling addstr method        addstr("G", "G");        addstr("Geeks", "forGeeks");        addstr("Cat", "Dog");        addstr("Hello", 1232);        addstr(12, 30);    }}
Output:
GG
GeeksforGeeks
CatDog
Hello1232
42

The compiler will throw an exception at runtime if the methods and the properties are not compatible.
It does not support the intellisense in visual studio.
The compiler does not throw an error on dynamic type at compile time if there is no type checking for dynamic type.
C#
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
C# Dictionary with examples
Introduction to .NET Framework
C# | Delegates
C# | Multiple inheritance using interfaces
Differences Between .NET Core and .NET Framework
C# | Method Overriding
C# | String.IndexOf( ) Method | Set - 1
Extension Method in C#
Difference between Ref and Out keywords in C#
C# | Replace() Method