I know this is an old thread, but I love expounding on programming, and I think this post will be useful.
I recommend learning C++ at some point. It will break your brain. It will break your brain with amazing, and it will break your brain with stupid (most of it legacy). It will break your brain with mind-bending "How did s/he do that?!?!", and in good and bad ways.
But you will learn more about how a computer actually operates than you ever will with just C#, and you will come out a better programmer.
Also, it'll show you where C# is restrictive...And where C# is a shining example of sanity, keeping your sanity, and getting stuff done. It'll also show you were C# is derp.
C++ is amazing. In both senses of the word.
Learn C++.
(Ia ia Cthulthu!)
Then learn another programming language.
(Cthulthu ftaghn!)
Anyway, the more programming languages you know, the more you understand whichever programming language you focus on. And learning a programming language is just the first step to learning how to program.
Learning a programming language tells you what the syntax and semantics are. It doesn't tell you how to best use them, or why.
Learning C# tells you that C# does not have "is-a" interfaces. Learning how to program lets you add them.
(man, I wish I had my code organized when I wrote that - I'd be able to find it!)
And, as always, professionals study logistics. I r an expert.
(something something R'yeh)