When using a programming language, you’ll usually settle into a language as you primary choice based on several reasons, one is that you enjoy using the language. Even if you love a programming language, you can still be annoyed by some of their less than great features that you just can’t ignore.
In this article by Eric Lippert, he highlights the top 10 things he hates about C#, the powerful language from Microsoft.
When I was on the C# design team, several times a year we would have “meet the team” events at conferences, where we would take questions from C# enthusiasts. Probably the most common question we consistently got was “Are there any language design decisions that you now regret?” and my answer is “Good heavens, yes!”
This article presents my “bottom 10” list of features in C# that I wish had been designed differently, with the lessons we can learn about language design from each decision.
Before I begin, a few caveats. First, my opinions are my own and not necessarily those of the whole C# design team. Second, all these design decisions were made by smart people who were trying to find a balance between many competing design goals. In every case, there were powerful arguments for the feature at the time, and it’s very easy to criticize with decades of hindsight. C# gets almost everything right; all of these points are minor quibbles about details of a very impressive and successful language.
#10: The empty statement does nothing for me
#9: Too much equality
#8: That operator is shifty
#7: I’m a proud member of lambda lambda lambda
#6: Bit twiddling entails parentheses
#5: Type first, ask questions later
Read all 10 items on the list, and the details why they are included on this list, here.