Introduction
C# 4.0 supports dynamic programming by introducing new dynamic-typed objects. The type of these objects is resolved at run-time instead of at compile-time. The keyword tells the compiler that everything to do with the object declared as dynamic should be done dynamically at the run-time using Dynamic Language Runtime(DLR).
The main advantage of this dynamic programming is it provides more flexibility to developers.
Example
using System;
class Program
{
    static void Main(string[] args)
    {
        dynamic num = GetNum();
        dynamic str = GetString();
        Console.WriteLine("Your number is " + num);
        Console.WriteLine("Your string is " + str);
        Console.Read();
    }
    private static string GetString()
    {
        return "Welcome";
    }
    private static int GetNum()
    {
        return 1;
    }
}
Note. We use the var keyword, but the main difference between both is var is resolved at compile time, and dynamic is resolved at runtime.