Condividi tramite


Marshalling di classi, strutture e unioni

In .NET Framework classi e strutture sono simili. Entrambe possono avere campi, proprietà ed eventi. nonché metodi static e non static. Una differenza fondamentale è data dal fatto che le strutture sono tipi di valore e le classi sono tipi di riferimento.

Nella seguente tabella sono elencate le opzioni di marshalling per le classi, le strutture e le unioni con la descrizione dell'uso e un collegamento all'esempio corrispondente di platform invoke.

Tipo

Descrizione

Esempio

Classe per valore.

Passa una classe con membri integer come parametro in/out, come il case gestito.

SysTime

Struttura per valore.

Passa le strutture come parametri in.

Strutture

Struttura per riferimento.

Passa le strutture come parametri in/out.

OSInfo

Struttura con strutture annidate (semplificata).

Passa una classe che rappresenta una struttura con strutture annidate nella funzione non gestita. La struttura viene semplificata in una sola grande struttura nel prototipo gestito.

FindFile

Struttura con strutture annidate (non semplificata).

Passa una struttura con una struttura incorporata.

Strutture

Struttura con puntatore a un'altra struttura.

Passa una struttura che contiene un puntatore a una seconda struttura come membro.

Strutture

Matrice di strutture con integer per valore.

Passa una matrice di strutture che contengono solo interi come un parametro in/out. È possibile modificare i membri della matrice.

Matrici

Matrice di strutture con interi e stringhe per riferimento.

Passa una matrice di strutture che contengono interi e stringhe come un parametro out. La memoria per la matrice viene allocata dalla funzione chiamata.

OutArrayOfStructs

Unioni con tipi di valore.

Passa le unioni con tipi di valore (integer e double).

Unioni

Unioni con tipi misti.

Passa unioni con tipi misti (integer e string).

Unioni

Valori null nella struttura.

Passa un riferimento null (Nothing in Visual Basic) invece di un riferimento a un tipo di valore.

HandleRef

Vedere anche

Concetti

Tipi di dati di platform invoke

Marshalling di stringhe

Marshalling di matrici di tipi

Esempi vari di marshalling

Altre risorse

Marshalling dei dati con platform invoke