Nasıl yapılır: Öznitelikleri Kullanarak C/C++ Birleşimi Oluşturma (Visual Basic)
Öznitelikleri kullanarak yapıların bellekte nasıl yerleştirileceği özelleştirebilirsiniz. Örneğin, ve FieldOffset
özniteliklerini kullanarak StructLayout(LayoutKind.Explicit)
C/C++ dilinde birleşim olarak bilinen bir öğe oluşturabilirsiniz.
Örnek 1
Bu kod kesiminde, tüm alanları TestUnion
bellekte aynı konumda başlar.
' 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
Örnek 2
Aşağıda, alanların açıkça ayarlanmış farklı konumlarda başladığı başka bir örnek verilmiştir.
' 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
ve i2
iki tamsayı alanı ile i1
aynı bellek konumlarını lg
paylaşır. Yapı düzeni üzerinde bu tür bir denetim, platform çağrısı kullanılırken kullanışlıdır.
Ayrıca bkz.
GitHub'da bizimle işbirliği yapın
Bu içeriğin kaynağı GitHub'da bulunabilir; burada ayrıca sorunları ve çekme isteklerini oluşturup gözden geçirebilirsiniz. Daha fazla bilgi için katkıda bulunan kılavuzumuzu inceleyin.