в том же шарпе есть var (как в джаве, по-моему), семантически - это вывод типов, т.е. без явного указания типа компилятор до запуска программы определяет сам тип переменной, а вот dynamic определяется во время рантайма
Ключевым моментом использования DLR в C# является применение типов dynamic. Это ключевое слово позволяет опустить проверку типов во время компиляции. Кроме того, объекты, объявленные как dynamic, могут в течение работы программы менять свой тип.