Массивы строк в управляемом СЗ

Я пытаюсь написать заявление в управляемом C, но я не могу понять, как объявить массив строк.

Струнный лайнет;

бросает ошибку

"Система::Струна " : родной массив не может содержать этот управляемый тип

Так что я полагаю, есть другой способ сделать это для управляемых типов данных. Что это такое?

Ответ на: "Массивы строк в управляемом СЗ"

Количество ответов:3

Вы действительно имеете в виду управляемый C? Не СЗ/КЛИ?

Предполагая, что вы на самом деле используете C'/CLI (из-за сообщения об ошибке, которое вы разместили), есть два способа сделать это:

array<String^>^ managedArray = gcnew array<String^>(10);

создаст управляемый массив, т.е. тот же тип, что и строка в C.

gcroot<String^>[] unmanagedArray;

создаст неуправляемый массив C ' (я никогда не пробовал это с массивами - он хорошо работает с контейнерами stl, поэтому он должен работать и здесь).

http://www.codeproject.com/KB/mcpp/cppcliarrays.aspx

Это должно иметь все ответы, которые вам :)

При работе с управляемых СЗ (ака. КЗ/КЛИ ака. C-/CLR) вам нужно учитывать ваши переменные типы во всем, что вы делаете. Любой "управляемый" тип (в основном, все, что происходит от System::Object) может быть использован только в управляемом контексте. Стандартный массив СЗ в основном создает блок памяти фиксированного размера на куче, с размером (тип) x NumberOfItems байтами, а затем итерирует через это. Управляемый тип не может быть guarenteed, чтобы остаться в том же месте на кучу, как это первоначально было, поэтому вы не можете сделать это :)

Вы используете класс коллекции от .Net. Для example: :

List<String^>^ dinosaurs = gcnew List<String^>();