Blittable és non-Blittable types

A legtöbb adattípus közös ábrázolással rendelkezik mind a felügyelt, mind a nem felügyelt memóriában, és nem igényel különleges kezelést az interop marshaller számára. Ezeket a típusokat titkos típusoknak nevezzük, mert nem igényelnek átalakítást, ha a felügyelt és a nem felügyelt kód között kerülnek átadásra.

A platformhívási hívásokból visszaadott struktúráknak titkos típusoknak kell lenniük. A platformmeghívás nem támogatja a nem titkos szerkezeteket visszatérési típusokként.

A névtérben a System következő típusok a titkos típusok:

A következő összetett típusok szintén titkos típusok:

  • Egydimenziós tömbök, például egész számokból álló tömbök. Az olyan típus azonban, amely egy változó tömböt tartalmaz, a titkos típusok nem önállóan használhatók.

  • Formázott értéktípusok, amelyek csak hasábos típusokat tartalmaznak (és osztályokat, ha formázott típusokként vannak rendezve). A formázott értéktípusokról további információt az értéktípusok alapértelmezett rendezési beállításában talál.

Az objektumhivatkozások nem titkosak. Ez magában foglalja az olyan objektumokra mutató hivatkozások tömbét, amelyek önmagukban nem használhatók. Definiálhat például egy strukturált struktúrát, de nem definiálhat olyan oszloptípust, amely az adott struktúrákra mutató hivatkozásokat tartalmazó tömböt tartalmaz.

Optimalizálásként a rendszer a csak titkos elemet tartalmazó primitív típusokat és osztályokat tartalmazó tömböket rögzítette ahelyett, hogy a rendezés során másolták. Ezek a típusok úgy tűnhetnek, hogy in/out paraméterként vannak rendezve, ha a hívó és a hívó ugyanabban a lakásban van. Ezek a típusok azonban valójában In paraméterként vannak rendezve, és az InAttributeOutAttribute argumentumot in/out paraméterként kell alkalmaznia.

Egyes felügyelt adattípusok eltérő megjelenítést igényelnek egy nem felügyelt környezetben. Ezeket a nem titkos adattípusokat rendezhető űrlapmá kell alakítani. A felügyelt sztringek például nem titkos típusok, mert a rendezés előtt sztringobjektumokká kell konvertálni őket.

Az alábbi táblázat a névtér nem titkosítható típusait System sorolja fel. A delegáltak, amelyek statikus metódusra vagy osztálypéldányra hivatkozó adatstruktúrák, szintén nem titkosak.

Nem titkos típusok Leírás
System.Array C stílusú tömbre vagy SAFEARRAY.
System.Boolean 1, 2 vagy 4 bájtos értékké alakít át 1 vagy -1 értékkel true .
System.Char Unicode- vagy ANSI-karakterre konvertálja.
System.Class Osztályfelületté alakítja át.
System.Object Átalakítja egy változatra vagy egy felületre.
System.Mdarray C stílusú tömbre vagy SAFEARRAY.
System.String Null hivatkozással vagy BSTR-vel végződő sztringgé alakít át.
System.Valuetype Rögzített memóriaelrendezésű struktúrává alakít át.
System.Szarray C stílusú tömbre vagy SAFEARRAY.

Az osztály- és objektumtípusokat csak a COM-interop támogatja. A Visual Basic, C# és C++ megfelelő típusait az Osztálytár áttekintése című témakörben tekintheti meg.

Lásd még