I agree that anyone seriously interested in programming should steer clear of VB if possible. Just about anything is better than VB...
But C# and Delphi are completely different beasts. While both of them are designed by the same man, Anders Hejlsberg, Delphi has a huge userbase in enterprise software engineering and C# seems to be a very promising new language. Unlike Delphi (and Java), C# and the associated bytecode format (MSIL) are ECMA and ISO standardized, making them in par with C and C++ in terms of "openness". There's still some uncertainty of the .Net Framework, but up to date MS hasn't sued Mono or GNU for implementing it.
Under normal conditions I wouldn't plug a virtual machine driven language under any circumstances, but unfortunately I've read a lot about Windows Longhorn.
Longhorn will have an MSIL virtual machine integrated to it, so .Net programs will have negligible performance overhead and no memory overhead compared to native code. In other words, you won't get punished for using C#. Furthermore, the .Net Framework will be the native API of Longhorn, while it currently just wraps Win32 API (just like MFC).
I remember Sun rambling something about a similar "JavaOS" years ago, but it seems that hey had neither the resources nor the guts to actually create one. Actually they also rambled about standardizing Java, but they didn't have the guts for that either.
Naturally a lot of people aren't ever going to switch to Longhorn and for the current Win2k and XP implementations, .Net programs carry some overhead compared to native code.
And .Net isn't portable, as of yet. If creating portable software is important to you, I would suggest using plain vanilla C in favour of C++ for all eternity. Why? For starters, even today there isn't a single 100% standard compliant C++ compiler in existence. And I predict that there never will be. That means that your C++ programs might behave differently on different compilers, or they might not be compilable at all on certain compilers. That tells us something about the language itself. If it's impossible to create compiler for a language, the language doesn't have such a bright future IMHO.
C on the other hand, is a different story. There are 100% C89 compliant compilers for
everything, probably even for your washing machine. Sure, programming everything by hand in C is tedious, but I can assure you that when you start using namespaces, templates, multiple inheritance, RTTI, operator overloading, Boost, STL and possibly Win32API in a same project, you will start dreaming about the wonderful simplicity of C.
Besides, C++ is so horribly abused today (look through sourceforge.net projects) that it might have been better to use C all along.
Well, so much for pathos