C++ / CLI是否比C#更快? 它在哪种类型的操作中更快?
不一定。然而,C++/CLI消除了C#中存在的许多非高效方式(例如装箱)周围的语法糖。
此外,C++/CLI允许您更加干净地与非托管代码进行互操作,实际上允许您混合使用托管/非托管代码,在性能至关重要的环境中可能会有好处。
编辑:
请参见此帖子以了解一些差异:http://msdn.microsoft.com/en-us/library/ms379617(VS.80).aspx
由于它们都在.NET框架上运行,我认为性能差异将是微不足道的。任何差异几乎肯定是由使用的编译器的好坏决定的。
任何使用C++/CLI编写的托管代码,实质上与等效的C#代码完全相同,假设编译器准确无误,它们最终都会成为中间语言指令。然而,C++/CLI使得将非托管代码混合到托管部分中变得容易,如果进行了良好的优化,则可能提供相当大的速度优势。
由于它们都是编译成相同字节码并在同一虚拟机上运行的.NET语言,我认为通常情况下不会有区别。
C++/CLI实际上只是为.NET和C++之间提供语言互操作性而设计的。
是的,因为除了一些细节外,您可以像使用任何其他库一样使用 .NET,并继续拥有 C++ 的强大功能。混合使用 C++ 类和 .NET 类、内联汇编、创建驱动程序等。在 C# 中,您可以使用不安全代码,但不能访问 Direct2D API,例如它是受限制的。
Direct2dTest::MyForm^ form = gcnew Direct2dTest::MyForm();
//use (HWND)form.Handle.ToPointer() to acces the hwnd;
form->Show();
//you can use
//System::Windows::Forms::Application::Run(form);
//or a classic win32 loop
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}