2010-01-28 131 views
6

我看到使用C++代替C#的主要优点是编译为本地代码,所以我们获得了更好的性能。 C#更容易,但编译为托管代码。托管C++和C#有什么区别?

为什么会有人使用托管C++?它给我们带来了什么好处?

+1

托管C++也被弃用 - 您应该专注于C++/CLI,而不是。它使用得多,更好,并解决了相同的问题空间。 – 2010-01-28 02:08:58

回答

7

托管C++和C++/CLI允许您轻松编写与本机C++交互的托管代码。

当将现有系统迁移到.Net以及在科学环境中使用必须以C++运行的计算进行工作时,这特别有用。

+6

..和C#允许您轻松编写代码的_rest_。 – 2010-01-28 02:02:37

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; 
    }; 
} 
0

(C++/cli是新名称)你可以封装本地代码,以完美的方式使用垃圾控制的c#甚至过程回调。相反,您可以创建托管类型并通过C++与它们进行交互。

允许开发人员轻松迁移到c#以试验快速构建时间等。 xna,链接到本地​​库,如前所述!