It is true that you can use managed C++ extensions to call C++, but that means that you have to segregate all the time critical logic into the C++ layer, and use managed C++ to wrap around it and then use C# for a user interface. But still, it cannot be compared to writing a pure C++...