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é