well, literally speaking it would be a downgrade. why?
because C# uses the # sign, which is supposed to connotate a "sharp" note in music, which is a half-step up.
C++, however, uses the ++ operator, which is a full increment up.
Therefore, literally speaking:
C = 1
C# = 1.5
C++ = 2
However, enough with that. That's just joking around.
C# I think has MANY MANY nice features. Indeed I think it is an excellent language, however, I have not had as much experience with it as I have had with C++.
With C#, GUI definitely becomes much simpler than with C++. That is a fact. Also, such things as delegates, and also the new features of structs and classes are very nice. C# also has pointers, but they are not used as much as they would be in C++.
Meanwhile, C# is an interpreted language, sort of. Technically that makes it slower than C++. I have an irking suspicion, however, that Microsoft programmers have developed C# in such a way that its programs will run at C/C++ speeds in Windows environments, and then, if they ever port C# to Linux/Unix/Mac environments, they will run at more Java-like speeds.
C++ is my language of choice. Yes, memory management can be a nuisance sometimes, but I think it is an important thing that every programmer should learn and be proficient in. I have come upon scores of Java programmers up at college that have been doing Java their whole programming career, and they dont know jack crap about memory management or how to handle pointers or what the difference between the stack and heap are, etc. That is why I am so against Java being taught as a beginners language because I have seen people that dont have a clue about how to handle the memory, and they really should know how to do such things.