Маршалинг классов, структур и объединений
Обновлен: Ноябрь 2007
Классы и структуры в среде .NET Framework похожи. И те, и другие содержат поля, свойства и события. Они также могут иметь статические и нестатические методы. Заметным отличием является то, что структуры являются типами значений, а классы — ссылочными типами.
В следующей таблице представлены параметры маршалинга для классов, структур и объединений, описание их применения и ссылки на соответствующие примеры вызовов платформозависимого кода.
Тип |
Описание |
Образец |
---|---|---|
Класс по значению. |
Передача класса с целочисленными членами в качестве параметра In или Out (так же как и в случае управляемого класса). |
|
Структура по значению. |
Передача структур в качестве параметров In. |
|
Структура по ссылке. |
Передача структур в качестве параметров In и Out. |
|
Структура с вложенными структурами (выровненная). |
Передача класса, представляющего структуру с вложенными структурами, в неуправляемую функцию. Структура преобразуется в одну большую структуру в управляемом прототипе. |
|
Структура с вложенными структурами (не выровненная). |
Передает структуру с внедренной структурой. |
|
Структура с указателем на другую структуру. |
Передача структуры, содержащей указатель на вторую структуру в качестве члена. |
|
Массив структур с целочисленными значениями по значению. |
Передача массива структур, содержащих только целые числа, в виде параметра In/Out. Члены массива можно изменять. |
|
Массив структур с целочисленными значениями и строками по ссылке. |
Передача массива структур, содержащих целые числа и строки, в качестве параметра Out. Вызываемая функция выделяет память под массив. |
|
Объединения с типами значений. |
Передача объединений с типами значений (целочисленные и двойной точности). |
|
Объединения со смешанными типами. |
Передача объединений со смешанными типами (целое число и строка). |
|
Значения Null в структуре. |
Передача пустой ссылки ((Nothing в Visual Basic) вместо ссылки на тип значения. |
См. также
Основные понятия
Типы данных вызовов неуправляемого кода