As far as I can tell, the majority of C# programmers are either not aware of these features or don't know how to use it.
What stops me from praising C# is its ridiculous verbosity. A language in which the shortest possible form of a character array literal is
new char[] {'a', 'b'}
is doomed to be low-end, low entry-level, low-respect language, despite all efforts to bring some high-end features into it.