Linked by Thom Holwerda on Fri 22nd Feb 2008 09:16 UTC, submitted by obsethryl

Thread beginning with comment 302022
To view parent comment, click here.
To read all comments associated with this story, please click here.
To view parent comment, click here.
To read all comments associated with this story, please click here.
Member since:
2006-02-04
C# does not have all the features of C++. For example, C++ has multiple inheritance and C++ templates are more powerful then C# templates. Of course one can argue that it is actually a good thing that C# does not have multiple inheritance and I partly agree. But other languages like Scala and, I think, D provide mixins, which gives you some of the possibilities of multiple inheritance without causing the problems that multiple inheritance can cause. C# also lacks some other powerful features like pattern matching, which is often found in functional languages, e.g. Haskell.
Parts of the .Net libraries are crap, e.g. Windows.Forms. On the other hand, it is now replaced by WPF, which is really quite nice. Also, I found managed DirectX applications really hard to debug. If something goes wrong in your Shader code, you just get an "Error in application" exception, which is not helpful at all. At least the same code in OpenGL and C++, the error message includes a line number. And Qt is a C++ library, that more or less has the same feature set as the .Net class libraries. Qt4.4 even includes a multimedia API (Phonon), has its own HTML rendering engine (based on Webkit) and can render widgets on a canvas, similar to what you can do with WPF.
You can avoid many of these problems by using a decent framework like Qt, which does most of the memory managment for you and which has powerful string classes. Also there are numerous smart pointer classes which solve most of the memory related problems.
That sad, I also think C# is a decent language and I like programming with it. But C# and the .Net framework is certainly not perfect and there are other languages which are better than C# in certain areas like Haskell, Scala etc.