The question really needs to be what do you want to do? If you're just getting into programming, C# is probably better, because you don't have to worry about memory management as much, as everything is a pointer allocated on the heap. That being said, it can be slower depending on what you're doing. If you're writing a program that needs to be high performance c or c++ are way better. I've never used C# on any platform other than Windows, but depending on what you're doing c and c++ can get annoying if you're doing anything non-trivial with sockets or files cross platform, as directories and sockets are platform independent Java is also a good bet, since its a "write once, run everywhere" type language. I'm not a huge fan of Java, I think it takes most of the skill and fun out of it, with almost everything you could want being already in a standard library for you, and tends to have a lot over overhead. There are a lot of good Java IDE's though, which can be useful when you're just starting. C vs C++ is an interesting debate, I think C++ is better even if you don't use objects, because you have access to the "new" and "delete" keywords, which are a lot less daunting then having to use malloc when you're just starting out. There's also no // comment and no Boolean type in standard C (c88?).
When I just need to get something working quickly (on Windows) I go with C#, on Linux I always go with C++, just my opinion, but I'd go with C#.