Маршалинг строк
При вызове неуправляемого кода происходит копирование строковых параметров, а затем, при необходимости, выполняется их преобразование из формата .NET Framework (Юникод) в неуправляемый формат (ANSI). В силу того, что управляемые строки являются неизменяемыми, при вызове неуправляемого кода они не копируются из неуправляемой памяти в управляемую во время возврата из функции.
В следующей таблице представлены параметры маршалинга строк, описание их применения и ссылки на соответствующие примеры .NET Framework.
Строка |
Описание |
Пример |
---|---|---|
По значению. |
Передача строк как параметров In. |
|
Как результат. |
Возврат строк из неуправляемого кода. |
|
По ссылке. |
Передача строк как параметров In/Out с помощью StringBuilder. |
|
В структуре по значению. |
Передача строк в структуре как параметра In. |
|
В структуре по ссылке (char*). |
Передача строк в структуре, являющейся параметром In/Out. Неуправляемая функция ожидает указатель на символьный буфер, размер буфера является членом структуры. |
|
В структуре по ссылке (char[]). |
Передача строк в структуре, являющейся параметром In/Out. Неуправляемая функция ожидает вложенный символьный буфер. |
|
В классе по значению (char*). |
Передача строк в классе (класс представляет собой параметр In/Out). Неуправляемая функция ожидает указатель на символьный буфер. |
|
В классе по значению (char[]). |
Передача строк в классе (класс представляет собой параметр In/Out). Неуправляемая функция ожидает вложенный символьный буфер. |
|
Как массив строк по значению. |
Создание массива строк, передаваемого по значению. |
|
Как массив структур, содержащий строки по значению. |
Создание массива структур, содержащего строки. Массив передается по значению. |
См. также
Основные понятия
Типы данных вызовов неуправляемого кода
Маршалинг классов, структур и объединений