Hmm, Vergleich mal das "kleine" System.Collections mit der STL (z.B.
http://www.sgi.com/tech/stl/).
C++ konvertiert zwar implizit z.b. 32-Bit auf 16-Bit oder real -> integerm allerdings MIT WARNUNG (sofern du den Warn-Level nicht runterdrehst

)
Wohingegen das meiner Meinung nach absolut falsch für eien Programmiersprache ist:
System.Int32 eineZahl; // Wert, wie erwartet
MeineKlasse eineKlasse; // Referenz?? woher, wieso??
Während Referenzen in C++ mit '&' eindeutig gekennzeichnet werden:
int eineZahl; // Wert
MeineKlasse eineKlasse; // Wert
MeineKlasse& refEineKlasse; // Referenz
MeineKlasse* ptrEineKlasse; // Pointer
Nur damit du nmich nicht falsch verstehst: Für Webanwendungen ist C# IMO gut geeignet, aber so "stark" wie C++ wird es sicher nie sein.
(Ich persönlich sehe C# gern als "kleiner Bruder" von C++ (kompakt, aber eben nicht so umfangreich)

)
EDIT:
Ich habe C# mal vor nem halben Jahr oder so ein wenig programmiert, aber bin eigentlich bei C++ geblieben und hab nur nebenbei ein wenig mit C# "rumgespielt" (für ASP.NET ist es wirklich nützlich).
In letzter Zeit hatte ich wieder ein wenig mehr damit zu tun, da meine COM Objekte unter allen Sprachend ei COM unterstützen funtkionieren sollen (allerdings teste ich sie nur unter C++, C#, VB(.NET) und evtl. SmallTalk)