With the launch of the C# language, it was a major shift we took to a full managed environment. This was a big step for programming languages at Microsoft.
With the second release of C# we introduced fully reified Generics into the language. This was a very powerful addition to the type system.
C# 3.0 introduced LINQ which we talked about previously
Not just “dynamic” as in late-binding, but those features that allow the compiler to “get out of the developer’s way”.