One more on C#

k:
My job is programming C#, so naturally that would be the language I choose. C# is a great language for programming Windows applications and serverside webcode. But if you want to make games, C++ is the one and only language.
The reason is, that languages as C#, VB, VB.NET and java all need a runtime engine to work. C# and VB.NET needs the .NET Framework, java needs the Java Runtime Engine. The old VB also needs a runtime engine, which I don't remember the name of.
When you compile C++ code, it is compiled directly to machine code, which makes it runs faster. When programming games (especially 3d games), speed is essential.
You have to be carefull when programming C++ though, because it's easy to make memory leaks, which is not a good thing. When you don't have a Runtime Engine behind your program, you don't have a garbage collector.