Маршаллинг строк

При вызове неуправляемого кода копируются строковые аргументы, и при необходимости выполняется преобразование этих аргументов из формата .NET Framework (Юникод) в неуправляемый формат (ANSI). Так как управляемые строки являются неизменяемыми, то при вызове неуправляемого кода они не копируются обратно из неуправляемой памяти в управляемую память при возврате из функции.

В следующей таблице перечислены параметры маршалинга строк, описание их использования и ссылка на соответствующий пример платформа .NET Framework.

Строка Description Пример
По значению. Передает строки в качестве параметров In. MsgBox
Как результат. Возвращает строки из неуправляемого кода. Строки
По ссылке. Передает строки в качестве параметров In/Out с помощью StringBuilder. Буферы
В структуре по значению. Передает строки в структуре, которая является параметром In. Структуры
В структуре по ссылке (char*). Передает строки в структуре, которая является параметром In/Out. Неуправляемая функция ожидает указатель на символьный буфер, и размер буфера является членом структуры. Строки
В структуре по ссылке (char[]). Передает строки в структуре, которая является параметром In/Out. Неуправляемая функция ожидает внедренный символьный буфер. OSInfo
В классе по значению (char*). Передает строки в классе (класс является параметром In/Out). Неуправляемая функция ожидает указатель на символьный буфер. OpenFileDlg
В классе по значению (char[]). Передает строки в классе (класс является параметром In/Out). Неуправляемая функция ожидает внедренный символьный буфер. OSInfo
Как массив строк по значению. Создает массив строк, который передается по значению. Массивы
Как массив структур, содержащих строки по значению. Создает массив структур, содержащих строки. Массив передается по значению. Массивы

См. также