2010-01-28 171 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,鏈接到本地​​庫,如前所述!