Sdílet prostřednictvím


Postupy: Vytvoření sjednocení C/C++ pomocí atributů (Visual Basic)

Pomocí atributů můžete přizpůsobit způsob, jakým jsou struktury rozloženy v paměti. Pomocí atributů můžete například vytvořit to, co se v jazyce C/C++ StructLayout(LayoutKind.Explicit)FieldOffset označuje jako sjednocení.

Příklad 1

V tomto segmentu kódu jsou všechna pole startu TestUnion ve stejném umístění v paměti.

' Add an Imports statement for System.Runtime.InteropServices.

<System.Runtime.InteropServices.StructLayout(
      System.Runtime.InteropServices.LayoutKind.Explicit)>
Structure TestUnion
    <System.Runtime.InteropServices.FieldOffset(0)>
    Public i As Integer

    <System.Runtime.InteropServices.FieldOffset(0)>
    Public d As Double

    <System.Runtime.InteropServices.FieldOffset(0)>
    Public c As Char

    <System.Runtime.InteropServices.FieldOffset(0)>
    Public b As Byte
End Structure

Příklad 2

Následuje další příklad, kde pole začínají na různých explicitně nastavených umístěních.

' Add an Imports statement for System.Runtime.InteropServices.

 <System.Runtime.InteropServices.StructLayout(
      System.Runtime.InteropServices.LayoutKind.Explicit)>
Structure TestExplicit
     <System.Runtime.InteropServices.FieldOffset(0)>
     Public lg As Long

     <System.Runtime.InteropServices.FieldOffset(0)>
     Public i1 As Integer

     <System.Runtime.InteropServices.FieldOffset(4)>
     Public i2 As Integer

     <System.Runtime.InteropServices.FieldOffset(8)>
     Public d As Double

     <System.Runtime.InteropServices.FieldOffset(12)>
     Public c As Char

     <System.Runtime.InteropServices.FieldOffset(14)>
     Public b As Byte
 End Structure

Dvě celočíselná pole i1 a i2sdílejí stejná umístění paměti jako lg. Tento druh kontroly nad rozložením struktury je užitečný při použití volání platformy.

Viz také