.NET 4.0 introduced several new features including named and optional arguments, the dynamic type, covariance and contravariance, and improvements to the dynamic language runtime. Optional arguments allow omitting parameter values and using defaults. Named arguments specify parameters by name rather than position. The dynamic type acts as a placeholder known only at runtime. Covariance and contravariance define assignment compatibility for generic types. The dynamic language runtime was enhanced with expression trees to represent code semantics, call site caching, and interfaces for dynamic object interoperability.