What are the most common or vicious mistakes when experienced C++ programmers develop in C#?
Attempting to implement const
correctness on string
s.
I've seen many C++ coders code in a COM style in C#, trying to deal with the inadequacies of the language. C# provides lots of a type safe support for your enums and there are usually nicer APIs then P/Invoking back down to C++.
The other thing I've seen catch most people out is that C# generics are not templates.
Calling GC.Collect
.
Forgetting to specify access modifiers for every class member.
Writing the full namespace each time.
This is fine in C++ when you're typing std::this
or boost::that
. Not so great in C# when you repeat System.Windows.Forms.Whatever
all over the place.
Incidentally, the C# compiler has a number of heuristics in it for helping out the experienced C++ programmer who is a novice C# programmer. For example, if you say
int x[];
the compiler will helpfully point out that the [] is a part of the type in C#, so you probably meant
int[] x;
C# also allows things like putting unnecessary semicolons at the end of a class declaration so that C++ programmers who are in that habit don't get bitten by it.