Смущает между Native и Managed в CPP / CLI? - PullRequest
0 голосов
/ 23 февраля 2011

Если я использую режим / clr для компиляции кода, который выглядит примерно так:

int x = 3;
char ch='A';
int arr[]="Hi";
array<int>^ ManArr1={44};
array<int>^ ManArr2= gcnew array<int> {44};

мои вопросы сейчас: будет ли тип int сопоставлен с System::Int32 ??а как насчет char ch?Они считаются нативным или управляемым типом?Где будет казнен!через MSIL или нет !!

Мы видим, что int arr[] является собственным массивом, означает ли это, что он будет выполняться из MSIL?

Последний вопрос ,, Для обоих управляемых массивовManArr1 & ManArr2 в чем разница между двумя инициализациями ??

Ответы [ 2 ]

2 голосов
/ 23 февраля 2011

При компиляции с /clr вся ваша программа преобразуется в MSIL, если вы не используете #pragma managed(off) или #pragma unmanaged

  • int эквивалентно System::Int32
  • char эквивалентно System::SByte (не System::Char!)
  • Оба эти типа являются «примитивными». Управляемый код видит их как управляемые типы, а собственный код видит собственные типы.
  • Собственные массивы будут использовать непроверяемый MSIL (например, такие же, как указатели C #)
1 голос
/ 23 февраля 2011

Относительно "For both the managed array ManArr1 & ManArr2 what is the difference between the two initialization ??"

Функциональной разницы нет, одно является сокращением для другого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...