I'm gonna keep this very brief. I understand what Microsoft was going for with C#, and do think it does some things right. At the same time, there are some libraries that C# lack that Java has. Both are capable languages though and when used CORRECTLY (and by correctly, I am emphasizing that they used with a good object oriented design) they can be very useful.