androidi wrote:
JDanielSmith wrote: Instead of C#, why not learn C++/CLI instead..

Certainly, if you are into writing drivers or other close to kernel code. But if you do not care about the raw metal, I think it's enough if you can read C/C++ and be proficient in C#. Knowing a bit about how the machine works is always good, but I would not [...]

My point (here and on my blog) is that if you're happy with VB.NET, learning C# isn't going to get you much more than a different syntax.  VB.NET and C# are pretty much interchangeable as far as features/functionality; syntax is the biggest reason to prefer one over the other.

The biggest downside I see to C++/CLI instead of C# is less protection from yourself--it's easier to shoot yourself in the foot with C++/CLI than C#. 

Notice I'm careful to always say C++/CLI - I'm talking about writing 100% managed code.  With managed code, you're no closer to the "raw metal" in C++/CLI than you are with C# or VB.NET.  And if you need to go there, IJW in C++ is even easier than interop, p-invoke or unsafe.