C# isn't, in my opinion anyway, "better" than the other languages like Delphi, Java, VB; it is fairly well supported however in terms of sample code and tools, so it's easy to get started (as are the others). MS have done a decent job of a development environment and I was wrtting the application on a Windows platform so that was a contributory factor.
It's also worth looking at FreePascal (and Lazarus) which is comparable with older versions of Delphi but just feels dated now.
I think you hit the nail on the head with the dated: its all about how dated a language feels. As times change, all the basic functionality is provided for you, so you want quick and easy ways to access that to build bigger applications. The sorts of applications being built now where only being dreamt about 10 years ago, and 10 years beyond that.
The second thing is that security holes and requirements change over time. Older languages (pascal, fortran) never where really designed to do web scripts and talk to databases. They don't have the kind of functions which are useful (hrm, how DO you escape attempted sql injection in Fortran? ... maybe I'll try something on my new punch card writer!)
Also, there is a beginning to be a shift towards more high level virtual languages (again). There's lots of reasons for this, but at the moment one of the pressing reasons is that you don't (as a developer) have a good understanding of what target computer your app is going to run on. Is it a single processor box? is it some kind of funky quad processor box? Is it something scary like the itanium. The modern languages should be cool with abstracting to this sort of level, where older language (and I include C and Assembler in this) can't. I'm not saying they won't work, I'm just saying they wont be able to use the power as effectively.
I personally think you also can say one language is better then another - for individual roles and specifics. If you are a hacker and you want to be able to just write something quickly to do something (spam a website, accept emails, scan a thousand files), then you are looking for a language which has that kind of functionality which is easy to write in - perl, bash, etc.
If you're writing code for a bank, and have to be sure that its 100% correct, and that every exception possible is caught, and that every change to the code matches one of ten thousand test cases, then you might want something which is a little more meaty like C#, Java or C++.
I think if I was going to start from scratch to write an app now, it would either be in:
Bat / Bash for low level scripts (depending on OS) C# or Python for services Python/Django OR Php/Drupal for websites (or maybe something else if I was writing for cloud type services)
JT