C# 4.0
The major theme for C# 4.0 is dynamic programming.
Increasingly, objects are “dynamic” in the sense that their structure and
behavior is not captured by a static type, or at least not one that the
compiler knows about when compiling your program. Some examples include
a.
objects from dynamic programming languages, such
as Python or Ruby
b.
COM objects accessed through IDispatch
c.
ordinary .NET types accessed through reflection
d.
objects with changing structure, such as HTML
DOM objects
While C# remains a statically typed language, we aim to
vastly improve the interaction with such objects.
A secondary theme is co-evolution
with Visual Basic. Going forward we will aim to maintain the individual
character of each language, but at the same time important new features should
be introduced in both languages at the same time. They should be differentiated
more by style and feel than by feature set.
The new features in C# 4.0 fall into four groups:
Dynamic lookup
Dynamic lookup allows you to write method, operator and
indexer calls, property and field accesses, and even object invocations which
bypass the C# static type checking and instead gets resolved at runtime.
Named and optional parameters
Parameters in C# can now be specified as optional by
providing a default value for them in a member declaration. When the member is
invoked, optional arguments can be omitted. Furthermore, any argument can be
passed by parameter name instead of position.
COM specific interop features
Dynamic lookup as well as named and optional parameters both
help making programming against COM less painful than today. On top of that,
however, we are adding a number of other small features that further improve
the interop experience.
Variance
It used to be that an IEnumerable<string> wasn’t an IEnumerable<object>. Now it is – C# embraces type safe “co-and
contravariance” and common BCL types are updated to take advantage of that.
Download complete features list here:
http://code.msdn.microsoft.com/csharpfuture/Release/ProjectReleases.aspx?ReleaseId=1686