“Orcas” is the codename for the next release of Visual Studio, which will allow you to develop applications using .NET versions 2.0, 3.0 and the up-and-coming .NET 3.5. The .NET Framework 3.5 introduces no breaking changes, but it does include some exciting new functionality.
You can explore the new features in “Orcas” using its March Community Tech Preview (CTP). The CTP is conveniently distributed as a Virtual PC (VPC) image that contains a full install of Visual Studio codename “Orcas,” as well as the pre-release MSDN Documentation.
Language Enhancements, including Linq
I finally tore myself away from XNA last week and spent some time exploring “Orcas.” The March CTP is quite stable for experimentation purposes, and the documentation includes walkthroughs to help you get started with many of the key additions.
I love the language enhancements that come with .NET 3.5.
You may have heard of Linq, the Language INtegrated Query Framework, which promises to change the way we think about the object-relational boundary. By using a cocktail of innovative language and runtime features, Linq allows you to easily manage, iterate over and manipulate your data – whether it takes the form of objects, XML, or even a SQL database. Learn more at the Linq MSDN pages.
The language enhancements that accompany Linq were covered in a series of articles in Bart De Smet’s blog. Scott Guthrie has begun a series on them as well. Learn more about Automatic Properties, Object Initializers, and Collection Initializers here, and the handy Extension Methods here.
Because my head is still in XNA development space, I can’t help but reflect on how EVERY one of the enhancements I just mentioned and linked to will allow me to write more elegant code.
Automatic Properties – no more wasted lines of code on prolific, simple field getter/setters.
Object and Collection Initializers – significantly streamlined initialization of objects.
Extension Methods – no more VectorUtil, QuaternionUtil, MatrixUtil and other utility classes full of static methods and the awkward code used to access them throughout my project.