البنيات و عناصر البرمجة الأخرى
يمكنك استخدام البنيات بالاقتران مع المصفوفات ، و الكائنات و الإجراءات بالإضافة إلى إمكانية استخدامهم مع بعضهم البعض . كنا أن التفاعلات تستخدم نفس بناء الجملة مثل هذه العناصر حيث تُستخدم بشكل فردي .
ملاحظة
لا يمكنك تهيّئة أي من عناصر البنية في تعريف البنية. و لكن يمكنك تعيين القيم فقط إلى عناصر المتغير الذي تم تعريفه ليكون من نوع البنية .
البنيات و المصفوفات
يمكن أن تحتوي البنية على المصفوفة على هيئة واحد أو أكثر من عناصره. فيما يلي مثال يوضّح ذلك.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
يمكنك الوصول إلى قيم المصفوفة داخل البنية بنفس طريقة الوصول إلى الخاصية في الكائن . فيما يلي مثال يوضّح ذلك.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
يمكنك أيضاً تعريف مصفوفة البنيات. فيما يلي مثال يوضّح ذلك.
Dim allSystems(100) As systemInfo
اتبع نفس القواعد للوصول إلى مكونات هندسة البيانات هذه. فيما يلي مثال يوضّح ذلك.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
البنيات و الكائنات
يمكن أن تحتوي البنية على الكائن على هيئة واحد أو أكثر من عناصره. فيما يلي مثال يوضّح ذلك.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
يجب عليك استخدام فئة الكائن المعين في مثل هذا التعريف, بدلاً من Object.
البنيات و الإجراءات
يمكنك تمرير البنية كوسيطة إجراء. فيما يلي مثال يوضّح ذلك.
Public currentCPUName As String = "700MHz Pentium compatible"
Public currentMemorySize As Long = 256
Public Sub fillSystem(ByRef someSystem As systemInfo)
someSystem.cPU = currentCPUName
someSystem.memory = currentMemorySize
someSystem.purchaseDate = Now
End Sub
المثال السابق يمرر البنية حسب المرجع ، و الذي يسمح للإجراء بتعديل عناصره بحيث تصبح التغييرات نافذة المفعول في استدعاء التعليمات البرمجية. و إذا كنت تريد أن تحمي بنية ضد مثل هذا التعديل ، مررها حسب القيمة.
كما يمكن إرجاع بنية من إجراء Function . فيما يلي مثال يوضّح ذلك.
Dim allSystems(100) As systemInfo
Function findByDate(ByVal searchDate As Date) As systemInfo
Dim i As Integer
For i = 1 To 100
If allSystems(i).purchaseDate = searchDate Then Return allSystems(i)
Next i
' Process error: system with desired purchase date not found.
End Function
بنيات داخل البنيات
يمكن أن تحتوي البنيات على بنيات أخرى . فيما يلي مثال يوضّح ذلك.
Public Structure driveInfo
Public type As String
Public size As Long
End Structure
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As driveInfo
Public purchaseDate As Date
End Structure
Dim allSystems(100) As systemInfo
ReDim allSystems(1).diskDrives(3)
allSystems(1).diskDrives(0).type = "Floppy"
يمكنك أيضاً استخدام هذه التقنية لتغليف البنية المعرفة في وحدة نمطية واحدة داخل البنية المعرفة في وحدة نمطية مختلفة.
يمكن أن تحتوي البنيات على بنيات أخرى إلى عمق إجباري .
راجع أيضًا:
المهام
كيفية القيام بما يلي: تعريف بنية
المرجع
المبادئ
أنواع البيانات في Visual Basic