Accelerated C# 2008
I have just finished reading through Trey Nash's Accelerated C# 2008 and have found it a useful and enjoyable read. I picked it up at a local book shop some time ago as it seemed to be one of the few books covering C# 3.0 at the time and I didn't see the point in using anything older when approaching the language as new. I considered Pro C# 2008 and the .NET 3.5 Framework as an alternative but at over 1300 pages it seemed a little heavyweight and I was keen to read about just the core language and pick the other stuff up as I went along.
As a C++ programmer the book seemed to be targeted exactly at me with constant reference to that language and discussion of the merits of RAII in C++ compared with the IDisposable interface and the using statement in C#. Starting with an overview of C#, the CLR and basic syntax the book moves at a comfortable pace through strings, collections, iterators, delegates, generics and threading before taking a moment to search for "C# canonical forms". The book then turns its attention to extension methods, lambda functions and culminates in an introduction to LINQ. Although somewhat repetitive at times the book gives a good overview of the language with lots of useful references and even demonstrates implementations of some design patterns in C#.
I was however surprised at some of the design advice given especially the insistence on making classes 'sealed' unless you can think of a very good reason not to. This seems especially strange as the book references the Framework Design Guidelines, which make the opposite recommendation, on the same page. Although I do agree on favouring composition over inheritance.
While working through the book I have been playing with Monodevelop 2.0 which I built from svn along with the new(ish) Mono 2.0. I must say I'm impressed; it even has vi mode! I also like the fact that NUnit is integrated into the IDE.
I plan to continue my adventure into C# with the second edition of Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries when it arrives in the UK Amazon store next month.
