Le strutture sono tipi value, mentre le classi sono tipi reference. Una struttura con gli stessi campi occuperà in genere meno spazio di una corrispondente classe. Queste ultime, infatti, hanno uno overhead fisso di 8 bytes, sempre arrotondata al successivo multiplo di 4: perciò essa occupa sempre almeno 12 bytes. Una struttura, invece, occupa solamente uno spazio pari alla pura e semplice somma dello spazio richiesto da ogni suo campo, il tutto sempre arrotondato al più vicino multiplo di 4 (per eccesso). Per dati di 16 o meno bytes, quindi, è sempre meglio utilizzare una struttura.
Inoltre, è possibile ridurre lo spreco di memoria "ordinando" i campi in modo che le loro posizioni in memoria risultino allineate per bytes. Tutti gli elementi di una struttura in genere vengono allineati a indirizzi multipli di 4. Fanno eccezione a questa regola: Char, Short e UShort, che vengono allineati a indirizzi multipli di 2; Byte e SByte, che non vengono allineati. Volendo fare un esempio, la struttura che segue occupa 24 bytes:
Structure Esempio
    Dim B1 As Byte       'Offset 0  ; Grandezza 1 byte
    Dim I1 As Integer    'Offset 4  ; Grandezza 4 bytes
    Dim B2 As Byte       'Offset 8  ; Grandezza 1 byte
    Dim I2 As Integer    'Offset 12 ; Grandezza 4 bytes
    Dim C1 As Char       'Offset 16 ; Grandezza 1 byte
    Dim I3 As Integer    'Offset 20 ; Grandezza 4 bytes
    'Totale: 24 bytes
End Structure

Tuttavia, seguendo le regole summentovate, è possibile riorganizzare il contenuto della struttura, andando a posizionare i valori più piccoli vicini, per riempire spazio, mentre quelli più grandi alla fine:
Structure Esempio
    Dim B1 As Byte       'Offset 0  ; Grandezza 1 byte
    Dim B2 As Byte       'Offset 1  ; Grandezza 1 byte
    Dim C1 As Char       'Offset 2  ; Grandezza 1 byte
    Dim I1 As Integer    'Offset 4  ; Grandezza 4 bytes
    Dim I2 As Integer    'Offset 8  ; Grandezza 4 bytes
    Dim I3 As Integer    'Offset 12 ; Grandezza 4 bytes
End Structure

Il procedimento illustrato si può riassumere in uno schema come segue:

Con le classi, questa ottimizzazione manuale non è necessaria, poichè il compilatore è in grado di sistemare manualmente i campi in modo da ottenere il massimo risparmio di spazio. Con le strutture, è invece possibile utilizzare l'attributo StructuLayout, definito nel namespace System.Runtime.InteropServices:
<StructLayout(LayoutKind.Auto)> _
Structure Esempio
    '...
End Structure