C# is quite an interesting language, (relatively) new. A lot of the people I know that develop in it gush over it. To be perfectly honest, I've yet to develop anything substanial in C# - this is not a failing of the language, rather of my time and the energy I can put into things.

Because of the way Microsoft pushes it it's also commonly associated with .NET 3.0 and other such things which apparently cooperate pretty well. C# and .NET are supposedly one of those "killer stacks".

The change in C# from C++ is quite big but not without reason, I've found. The syntax itself is all relatively self explanatory but it's gone from the OOP/pragmatic compromise that C++ was to a pretty hardcore OOP stance. 90% of all things are just classes now and at first I found it slightly disconcerting. OOP is lovely, but not that lovely.

But the main benefits are:
  • OOP can now be implemented much cleaner and better than ever before, as I mentioned.
  • A bit more "bang for your buck" - perhaps you could call it higher level - than C++. When you'd be mucking around with general internals and juggling of bits and bytes with C++, painstakingly coming from the ground up, you'll just use one of the prefabricated control structures or other things with C# and it works.
  • Some sorely needed language additions, like foreach and using blocks (which are now pretty important).
  • Garbage collection. Memory leaks are no longer such a terrible calamity, although I'm sure quite possible.
  • Code documentation is (sort of) XML based. It's odd, but a different improvement from the "fuck ever" of C++.
With my limited experience, I'm probably missing out some "killer features". Those are what I find most compelling, but you'd probably feel different.

I think there is nothing in C# you can't do in C++. C++ is still very powerful but very dangerous if you don't know what you're doing - complexity just shoots through the roof and sometimes it's better to bite the bullet. I sense C# as being the way things may just be headed (it's quite a logical progression) and so it's definitely worth a more in depth look.

It also seems like a rather fast developing language. Why I don't know, but there are are several "versions" of C# (1.0, 2.0, 3.0...) although I'd recommend the Visual C# 2005 Express IDE/compiler from Microsoft's website which is available for free if you were interested in playing with it a bit. Frankly the examples they give in the IDE are pretty shit, but I've already seen some very interesting things with DirectX and C#. Speed impacts aren't as huge as I thought they might be.

It's not ECMA standard but, well, who cares?