Поделиться через


Маршалинг классов, структур и объединений

Классы и структуры в среде .NET Framework похожи. И те, и другие содержат поля, свойства и события. Они также могут иметь статические и нестатические методы. Заметным отличием является то, что структуры являются типами значений, а классы — ссылочными типами.

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

Тип

Описание

Образец

Класс по значению.

Передача класса с целочисленными членами в качестве параметра In или Out (так же как и в случае управляемого класса).

SysTime

Структура по значению.

Передача структур в качестве параметров In.

структурам;

Структура по ссылке.

Передача структур в качестве параметров In и Out.

OSInfo

Структура с вложенными структурами (выровненная).

Передача класса, представляющего структуру с вложенными структурами, в неуправляемую функцию. Структура преобразуется в одну большую структуру в управляемом прототипе.

FindFile

Структура с вложенными структурами (не выровненная).

Передает структуру с внедренной структурой.

структурам;

Структура с указателем на другую структуру.

Передача структуры, содержащей указатель на вторую структуру в качестве члена.

структурам;

Массив структур с целочисленными значениями по значению.

Передача массива структур, содержащих только целые числа, в виде параметра In/Out. Члены массива можно изменять.

массивов,

Массив структур с целочисленными значениями и строками по ссылке.

Передача массива структур, содержащих целые числа и строки, в качестве параметра Out. Вызываемая функция выделяет память под массив.

OutArrayOfStructs

Объединения с типами значений.

Передача объединений с типами значений (целочисленные и двойной точности).

Объединения

Объединения со смешанными типами.

Передача объединений со смешанными типами (целое число и строка).

Объединения

Значения Null в структуре.

Передача пустой ссылки ((Nothing в Visual Basic) вместо ссылки на тип значения.

HandleRef

См. также

Основные понятия

Типы данных вызовов неуправляемого кода

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

Маршалинг массивов типов

Другие примеры маршалинга

Другие ресурсы

Маршалинг данных при вызове неуправляемого кода