Маршаллинг строк
При вызове неуправляемого кода копируются строковые аргументы, и при необходимости выполняется преобразование этих аргументов из формата .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 |
Как массив строк по значению. | Создает массив строк, который передается по значению. | Массивы |
Как массив структур, содержащих строки по значению. | Создает массив структур, содержащих строки. Массив передается по значению. | Массивы |
См. также
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.