One thing here hasn't been mentioned yet: the reason for its existance. C++ was created first for systems programming; thus, it will always be a systems language. C# was created for the web. Both will coexist for many years to come. My personal advice is not to learn C# right away. If you're a good C++/Win32 programmer, you'll be more powerful in your C# training. You'd be more valuable to a team that has a knowledge of C# only. .NET is basically the next Windows API, but it is an overlap "layer" of Win32. How can you be a proficient C# programmer if you haven't grasped the "core" of where the language built from?