我看到使用C ++而不是C#的主要优点是编译为本机代码,因此我们获得了更好的性能。 C#更容易,但编译为托管代码。
为什么有人会使用托管C ++?它给我们带来了什么好处?
答案 0 :(得分:7)
托管C ++和C ++ / CLI允许您轻松编写与本机C ++交互的托管代码。
在将现有系统迁移到.Net以及在科学上下文中使用必须在C ++中运行的计算时,这尤其有用。
答案 1 :(得分:2)
托管c ++允许更容易地在本机代码和托管代码之间进行互操作。例如,如果你有一个c ++库(.cpp文件和.h文件),你可以将它们链接到你的项目中,并创建适当的CLR对象,只需从你的CLR对象中调用本机代码:
#include "yourcoollibrary.h"
namespace DotNetLibraryNamespace
{
public ref class DotNetClass
{
public:
DotNetClass()
{
}
property System::String ^Foo
{
System::String ^get()
{
return gcnew System::String(c.data.c_str());
}
void set(System::String ^str)
{
marshal_context ctx;
c.data = ctx.marshal_as<const char *>(str);
}
}
private:
NativeClassInMyCoolLibrary c;
};
}
答案 2 :(得分:0)
(c ++ / cli是新名称)您可以使用垃圾控制的c#将本机代码完美地工作,甚至可以处理回调。反过来,您可以创建托管类型并从c ++与它们进行交互。
允许开发人员轻松迁移到c#以快速构建导航等等,例如xna,链接到本机库,如上所述!