Well, C# and .NET are "hybrid" languages. Unlike "pure" languages like C, C++, etc, they offer specialized services to the application programmer not "explicitly" offered by pure languages in the form of COM objects, ATL add ons, etc. However, a clever C programmer has access to these services as well, he just has to work harder ;-) Like Java, .NET generates bytes right on the spot for the target machine, sort of a self-portable compiler (scary, huh?). Of course with C, C++, you must compile your program with a compiler that generates bytecodes for a given machine. The tradeoff, of course, is less frills but more flexibility. A good analogy might be this: You have a device which requires a special screwdriver. You could purchase one made for that device (.NET), and you know that it will work. Unfortunately, it comes with only one bit so you can't use it for anything else. Then again, you could buy the swiss army screwdriver(C/C++) which can be used for many more applications, but is much harder to configure.
Ok. That's a semi-lame analogy. But you get the point.:-D
My advice would be to learn a pure language first, and then move on to a hybrid. Not only will you be a better programmer, you'll be more valuable as an employee/contractor.