Каково различие между управляемым С++ и C#?

Главное преимущество я вижу использование C++ вместо C#, компилирует в собственный код, таким образом, мы получаем лучшую производительность. C# легче, но компилирует в управляемый код.

Почему кто-либо использовал бы управляемый С++ для? То, что способствует ему, дает нам?

6
задан Doug 28 January 2010 в 01:56
поделиться

3 ответа

Управляемое C ++ и C ++ / CLI позволяют легко написать управляемый код, который взаимодействует с наживленным C ++.

Это особенно полезно при миграции существующей системы в .NET и при работе в научных контекстах с расчетами, которые должны работать в C ++.

7
ответ дан 10 December 2019 в 02:47
поделиться

Управляемый 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
ответ дан 10 December 2019 в 02:47
поделиться

Конечно, если имеется атомарная инструкция CompeyAndSwap :

for (i = 0; ; i = (i + 1) % MAILBOX_SIZE)
{
    if ((mailbox[i].owned == false) &&
        (CompareAndSwap(&mailbox[i].owned, true, false) == false))
        break;
}

mailbox[i].message = message;
mailbox[i].ready = true;

После чтения сообщения поток-потребитель просто наборы почтовый ящик [i] .ready = false; почтовый ящик [i] .owned = false; (в таком порядке).

-121--3133465-

Есть несколько библиотек Javascript, которые реализуют кластеризацию и очень легко интегрируются в существующий мэшап:

  • MareyClusterer - я использовал это для мэшапа и нашел его простым в интеграции, с хорошим набором значков по умолчанию.
  • ClusterMarker - Я не использовал этот, но он кажется довольно функциональным.

Вы также можете прочитать эту запись блога , в которой рассматриваются различные альтернативы.

-121--2975524-

(c + +/cli - новое имя) Можно переносить собственный код для безупречной работы с контролем мусора c # и даже выполнять обратные вызовы. Обратно можно создавать управляемые типы и взаимодействовать с ними из c++.

Позволяет разработчикам легко переходить на c #, чтобы пилотировать быстрое время сборки и т.д., например, xna, связываясь с собственными библиотеками, как упомянуто!

0
ответ дан 10 December 2019 в 02:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: