W wersji 4.0 wprowadzono nowy typ – dynamic. Zmienne tego typu będą sprawdzane w momencie wywołania (runtime) a nie kompilacji. Oznacza to, że w czasie kompilacji nie będziemy poinformowani o błędach takich jak brak funkcji. Przykład:
dynamic variable="tekst"; variable=variable *5;
Powyższy kod skompiluje się, jednak w momencie uruchomienia zostanie wyrzucony wyjątek (nie można pomnożyć przecież tekstu przez liczbę). Gdybyśmy użyli klasycznych typów (np. string) kompilacja nie powiodłaby się.
Dynamic jest wykorzystywany w najnowszej wersji (3.0) ASP.NET MVC np. jako ViewBag – upraszcza to składnie. Wykorzystanie dynamic również eliminuje konieczność wykorzystywania refleksji w momencie gdy mamy obiekt typu object i chcemy wywołać jakąś metodę czy konstruktor (a nie mamy bazowego interfejsu). Należy oczywiście stosować typ ostrożnie ponieważ często jego użycie może oznaczać błędną architekturę.