Please do not get me wrong; C# is awesome. It is the language of my choice, even though I am pretty well versed in C++ and Java. That having been said, it cannot be denied that C# has its share of flaws, too. In this series of posts I am documenting some of them, in no particular order.
Also please note that some of the issues described here are Visual Studio bloopers, or DotNet bloopers, and not C#-in-general bloopers.
C# Blooper №1: No warnings about uninitialized readonly members
C# Blooper №2: No warnings about accessing uninitialized members
C# Blooper №3: No warnings about fields having already been initialized
C# Blooper №4: Lame/annoying variable scoping rules, Part 1
C# Blooper №5: Lame/annoying variable scoping rules, Part 2
C# Blooper №6: No warnings about unused parameters
C# Blooper №7: No warnings about unused private methods
C# Blooper №8: No warnings for conditions that are always true/false
C# Blooper №9: Annoying case statement fall-through rules
C# Blooper №10: Switch statements are not properly formatted
C# Blooper №11: Zero to Enum conversion weirdness
C# Blooper №12: ‘Where’ constraints not included in method signatures
C# Blooper №13: Stack and Queue do not implement ICollection
C# Blooper №14: Weird / annoying interface method visibility rules
Stay tuned, there is more to come.