I posted this in another thread, but should've posted it here.
Java doesn't give you the ability to manage your own memory like in c/c++ which is a huge disadvantage. But it also makes coding in java much easier.
C# is microsofts answer to java. Sun sued ms(or tried to sue, I don't know if they won) for stealing java and naming it j++, so they created c#.
C# give you the ability to manage your memory, and also give you top down functionality. It's not meant to take over c++, but was probably intended to take over java.
But since it's an ms product, it's geared towards ms operating systems, so it's not likely to knock out java anytime in the near future.
Rumor is that ms is releasing C# into the public domain so it'll become standardize, which should be interesting.
Most colleges are switching to java (or c#) because c++ is too complex to teach in such a period of time.
Of course, this post is mostly from what I've heard, don't quote me on anything.