Flexible - converts snippets, files, and folders from C++ to C#
Fast - tens of thousands of lines converted from C++ to C# per minute
Helpful conversion comments
Excellent educational tool for C++ developers learning C#
Numerous conversion and formatting options
FAQ
Q: Are the original C++ files altered in any way?
Your existing code is left completely intact. The new
C# files are output to the new location that you specify.
Q: What version of C++ is converted?
We attempt to convert as much as possible and are continually updating the converter
to handle newer C++ features. However, many new C++ features have no C# equivalent so the output will require adjustments.
Q: What is the conversion accuracy?
Our accuracy is very high, but there will be
significant adjustments required for all but the most trivial
conversions. There are no direct equivalents for some aspects of C++.
Read the rest of the FAQ to get an idea of a few things that are
not converted. C++ to C# Converter is intended to reduce
the amount of work you'll have to do to
convert code to C#, but it is just the first step.
You should not attempt to convert code that is heavily dependent
on pointer arithmetic or template metaprogramming since these
features are only practical in C++.
Q: What about function pointers?
C++ to C# Converter converts function pointer typedefs to delegates.
Q: What about STL Containers?
C++ to C# Converter converts references to most
STL container types, such as std::vector. A few methods of these containers that have no equivalent
are not converted.
Q: Is C++/CLI code converted?
No. Despite the name, C++/CLI has very little in common with C++.
Q: What about C++ UI code?
The converter does not convert C++ UI types due to
the lack of similarity between these types and .NET UI types.
Q: What are the most common adjustments necessary after conversion?
Most C/C++ library function calls are not converted. However, we do
convert a subset of the C-based string, keyboard I/O, math, and utility function calls, and some of
the C++ keyboard I/O methods, STL-based string class methods,
and most STL containers.
Pointer arithmetic has no good equivalent in C#.
Some pointer and address manipulation may remain in the converted code.
Code that is extremely dependent on the preprocessor may result in more conversion issues.
Multiple inheritance is not converted since it is not available in C#.
C++ templates are converted to, but are only
roughly equivalent to, C# generics. These may require further attention.
C++ template metaprogramming and variadic templates have no equivalent in C#.
Bit-by-bit copying of objects via the
assignment operator is not the default in C#. We attempt
to detect these cases and convert the assignment to
a call to either the copy constructor (if used in a variable
initialization) or the converted assignment operator overload (which is
converted to a 'CopyFrom' method) and also provide a 'Warning' comment.
C# does not allow embedded assembly instructions. These are marked with a comment.
There is no equivalent to friend functions or
friend classes in C#. These are marked with a comment.
Unions and bit fields have no elegant
equivalent in C#. Unions are commented out with a 'task' note.
A few operators that can be overloaded in C++ cannot be overloaded in C#. These are marked with a
comment.