The C# language has grown since it’s first implementation into a robust development language. Learning the nuances of the language is the key to becoming a C# coding wizard. One of the best programmers that I know recommended the book Effective C#: 50 Specific Ways to Improve Your C#. This book is a wealth of great tidbits and introspection on various facets of working with C# and the .NET framework. As the title indicates, there are 50 items and is each item is about 5-10 pages in length. The book points at many of the common pitfalls that Java and C++ developers fall into. Also, how the language and framework has changed since it’s inception is also pointed out. Much of the value of the book comes from contrasting C# to other languages and to it’s own earlier incarnations. Item 11 in the text says that you should prefer using foreach loops. Most .NET programmers know that the foreach loop is slower than the for loop, but that is no longer the case. The compiler generates different IL for arrays versus other collections. Shame on me for not knowing this, but I had the old 1.0 way of thinking still in my head. I highly recommend the book, Effective C#: 50 Specific Ways to Improve Your C#, for it’s very insightful list of C# programming gems.