Přenositelné a nepřenositelné typy
Většina datových typů má společnou reprezentaci ve spravované i nespravované paměti a nevyžadují zvláštní zpracování ze strany zařazovače interoperability. Tyto typy se nazývají typy blittable , protože nevyžadují převod při předávání mezi spravovaným a nespravovaným kódem.
Struktury, které jsou vráceny voláním volání platformy, musí být blitelné typy. Volání platformy nepodporuje neklikovatelné struktury jako návratové typy.
Následující typy z System oboru názvů jsou blittable typy:
Následující komplexní typy jsou také blikovatelné typy:
Jednorozměrná pole s proměnlivými primitivními typy, jako je například pole celých čísel. Typ, který obsahuje pole proměnných typů blittable, však není sám o sobě blittable.
Formátované typy hodnot, které obsahují pouze typy s bližovatelnou hodnotou (a třídy, pokud jsou seřazeny jako formátované typy). Další informace o formátovaných hodnotových typech najdete v tématu Výchozí seřaďování pro typy hodnot.
Odkazy na objekty nejsou měnitelné. To zahrnuje pole odkazů na objekty, které jsou samy o sobě blikovatelné. Můžete například definovat strukturu, která je blittable, ale nemůžete definovat typ blittable, který obsahuje pole odkazů na tyto struktury.
Při optimalizaci jsou pole primitivních typů a tříd, které obsahují pouze členové blittable, připnuty místo kopírování během seřazování. Pokud jsou volající a volaný ve stejném bytě, můžou být tyto typy seřazené jako parametry In/Out. Tyto typy jsou však ve skutečnosti seřazeny jako in parametry a pokud chcete zařazovat argument jako in/out parametr, musíte použít InAttribute atributy a OutAttribute .
Některé spravované datové typy vyžadují v nespravovaném prostředí jinou reprezentaci. Tyto neklikovatelné datové typy musí být převedeny do podoby, která může být seřazena. Například spravované řetězce jsou neměnitelné typy, protože musí být převedeny na řetězcové objekty, aby bylo možné je seřaďovat.
V následující tabulce jsou uvedeny typy, které nejsou klibitelné z System oboru názvů. Delegáti, což jsou datové struktury, které odkazují na statickou metodu nebo instanci třídy, jsou také nerozbitelné.
Nebližovatelný typ | Popis |
---|---|
System.array | Převede na pole ve stylu C nebo SAFEARRAY . |
System.Boolean | Převede na hodnotu 1, 2 nebo 4 bajtů s true hodnotou 1 nebo -1. |
System.Char | Převede na znak Unicode nebo ANSI. |
System.Class | Převede na rozhraní třídy. |
System.Object | Převede na variantu nebo rozhraní. |
System.Mdarray | Převede na pole ve stylu C nebo SAFEARRAY . |
System.string | Převede se na řetězec ukončující odkaz s hodnotou null nebo na BSTR. |
System.Valuetype | Převede na strukturu s pevným rozložením paměti. |
System.Szarray | Převede na pole ve stylu C nebo SAFEARRAY . |
Typy tříd a objektů jsou podporovány pouze zprostředkovatele komunikace COM. Odpovídající typy v jazyce Visual Basic, C# a C++ najdete v tématu Přehled knihovny tříd.
Viz také
Váš názor
Odeslat a zobrazit názory pro