As a VB.NET developer, here's what I don't like about C#, granted my experience is from reading C#, not writing it so much:
1) No edit and continue. - I've seen arguments that Edit and Continue is a bad thing and that it encourages bad coding habits. It reminds me of 25 years ago my project mgr telling me that my love of what was at that time an advanced debugger, was a "crutch" and that it encouraged bad programming habits. Sorry, I didn't by it then, I ain't buying it now-or at the very least, the advantages outweigh the disadvantages 10:1.Once C# gets this feature, you'll appreciate it more and really approeciate it if you ever have to code w/o itagain.
2) The language is case sensitive.- IMHO, this is pure evil. Would people agree that it is bad to have two variables in the same scope that vary only by case? if so, why allow it? Yuck.
3) Background compilation and hence better design-time feedback of errors. - A mixed blessing, as this slows down the IDE. But with 2008, performance is better and is probably a time saver. Course, this is not a factor of the language itself, just the dev environment.
4) Braces {}{} - Reminds me of my LISP days where you can tell a LISP programmer from other programmers: Theyre the ones with their fingers on the screens trying to match up parens.
I find the following VB code easier to read and less likely to contain
If condition1 then
truestatement1
truestatement2
else
falsestatement1
falsetatement2
end if
If (condition1) then {
truestatement1;
truestatement2;
} //if (cond)
else
{
falsestatement1;
falsetatement2;
} //else (Condition)
All those braces with lack of auto-indent are just begging for compile time or run-time errors. And as the nested ifs get complex, the braces just add to it. In place of the 4 braces in the C# example, the VB code has just one END IF statement, but C# programmers that comment like to add optional comments as to what block the brace is end bracket is terminating. The VB code is self documenting with less typing-the IDE even adds the END IF for you when you type in the IF condition line. So, in the end, I am missing the brevity simplicity/benefit here that C# loves claim. The } might be more terse than the End If, but I'm suggesting that the overall structure is more unnecessarily complex. Granted, this all isn't that big of a deal, but as a novice C# coder I feel like it is a lot easier to mess up the nested conditions than it is to use VB.