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.