Blittable- en niet-Blittable-typen
De meeste gegevenstypen hebben een gemeenschappelijke weergave in zowel beheerd als onbeheerd geheugen en vereisen geen speciale verwerking door de interop marshaller. Deze typen worden blittable-typen genoemd omdat ze geen conversie vereisen wanneer ze worden doorgegeven tussen beheerde en onbeheerde code.
Structuren die worden geretourneerd door aanroepen op het platform, moeten belichte typen zijn. Platform aanroepen bieden geen ondersteuning voor niet-belichte structuren als retourtypen.
De volgende typen uit de System naamruimte zijn blittable-typen:
De volgende complexe typen zijn ook belichte typen:
Eendimensionale matrices van blittable primitieve typen, zoals een matrix met gehele getallen. Een type dat een variabele matrix van blittable-typen bevat, is echter niet zelf blittable.
Opgemaakte waardetypen die alleen belichte typen bevatten (en klassen als ze worden geformatteerd als opgemaakte typen). Zie Standaard marshalling voor waardetypen voor waardetypen voor meer informatie over opgemaakte waardetypen.
Objectverwijzingen zijn niet belicht. Dit omvat een matrix met verwijzingen naar objecten die door zichzelf kunnen worden belicht. U kunt bijvoorbeeld een structuur definiëren die blittable is, maar u kunt geen belicht type definiëren dat een matrix met verwijzingen naar deze structuren bevat.
Als optimalisatie worden matrices van blittable primitieve typen en klassen die alleen belichte leden bevatten vastgemaakt in plaats van te kopiëren tijdens marshalling. Deze typen kunnen worden ge marshalld als In/Out parameters wanneer de beller en de beller zich in hetzelfde appartement bevinden. Deze typen zijn echter eigenlijk marshalled als In parameters, en u moet de InAttribute en OutAttribute kenmerken toepassen als u het argument wilt marshalen als een In/Out-parameter.
Voor sommige beheerde gegevenstypen is een andere weergave in een niet-beheerde omgeving vereist. Deze niet-belichte gegevenstypen moeten worden geconverteerd naar een formulier dat kan worden ge marshalld. Beheerde tekenreeksen zijn bijvoorbeeld niet-belichte typen omdat ze moeten worden geconverteerd naar tekenreeksobjecten voordat ze kunnen worden ge marshalld.
De volgende tabel bevat niet-belichte typen uit de System naamruimte. Gedelegeerden, die gegevensstructuren zijn die verwijzen naar een statische methode of een klasse-exemplaar, zijn ook niet-belicht.
Niet-belicht type | Beschrijving |
---|---|
System.Array | Converteert naar een C-stijlmatrix of een SAFEARRAY . |
System.Boolean | Converteert naar een waarde van 1, 2 of 4 bytes met true als 1 of -1. |
System.Char | Converteert naar een Unicode- of ANSI-teken. |
System.Class | Converteert naar een klasse-interface. |
System.Object | Converteert naar een variant of een interface. |
System.String | Converteert naar een tekenreekseindtekening in een null-verwijzing of naar een BSTR. |
System.ValueType | Converteert naar een structuur met een vaste geheugenindeling. |
T[] | Converteert naar een C-stijlmatrix of een SAFEARRAY . |
Klasse- en objecttypen worden alleen ondersteund door COM-interoperabiliteit. Zie het overzicht van de klassenbibliotheek voor bijbehorende typen in Visual Basic, C# en C++.