Over the past few weeks, I’ve been spending a great deal of time getting to grips with the new features available in .NET 3.5, especially the new syntax supported by C# 3.0.
The new features are pretty cool - it’s clear that the people in charge of the developments took a lot of care to ensure that things were properly baked.
I’m especially impressed to see that the level of magic involved in the system is pretty minimal.
Sure, the LINQ syntax itself involves large globs of compiler magic, but that is just syntactic sugar. The underlying infrastructure provided to make LINQ work is fully accessible, no matter the .NET language you choose to use.
I’ve been trying out a few of the possibilities presented by the new features, and have been able to make the language sing and dance in some pretty cool ways.
One this is abundantly clear, though: This isn’t the C# language we thought we knew.