托管C ++和C#有什么区别?

时间:2010-01-28 01:56:57

标签: c# .net c++ managed-c++

我看到使用C ++而不是C#的主要优点是编译为本机代码,因此我们获得了更好的性能。 C#更容易,但编译为托管代码。

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

3 个答案:

答案 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,链接到本机库,如上所述!