C# 4.0 New Features (all good stuff IMPO, variance being the hardest to grok)
Named and Optional Parameters – already use this quite a bit
Dynamic Support – handy way to ignore the complexity of ‘dynamically’ generated type declarations (e.g. linq results & COM Interop)
Co/Contra-Variance – primarily intended to make .Net Framework methods with Generic type parameters like IEnumerable<T> “work like we’d expect” as is often quoted in explanatory texts (look for Jon Skeet and Eric Lippert). It removes a couple rather unexpected annoyances that C# 3 would’ve snagged on.
Covariance represents “upcastable”. Concerns types coming out of an API. Represented by “out” keyword, e.g. public interface IEnumerable<out T>
Contravariance is “downcastable”. Typically concerns types passed into an API. e.g. public interface IComparer<in T>
Invariance is when something must go both in and out of a method and it can’t be declared differently on either side of the interface, it must be the same coming and going.
Optimized interop assembly file size
WPF4 New Features
New Controls – *DataGrid*, Calendar/DatePicker
Fancy Win7 Taskbar support
Silverlight 4 New Features
New Controls – ViewBox (auto resize), RichTextBox
Drag and drop, clipboard access
More WPF compatible XAML parser
DataBinding improvements – StringFormat, collection grouping, INotifyDataErrorInfo or IDataErrorInfo support,
WCF Data Services enhancements – Direct POCO mapping via Linq queries on Open Data Protocol feeds.