Yapılar ve Diğer Programlama Öğeleri (Visual Basic)
Yapıları diziler, nesneler ve yordamlarla birlikte ve birbiriyle birlikte kullanabilirsiniz. Etkileşimler, bu öğelerin tek tek kullandığı söz dizimini kullanır.
Not
Yapı bildirimindeki yapı öğelerinin hiçbirini başlatamazsınız. Değerleri yalnızca yapı türünde olduğu bildirilen bir değişkenin öğelerine atayabilirsiniz.
Yapılar ve Diziler
Bir yapı, bir diziyi bir veya daha fazla öğesi olarak içerebilir. Aşağıdaki örnek bunu göstermektedir.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
Bir yapı içindeki bir dizinin değerlerine, nesnedeki bir özelliğe erişir gibi erişirsiniz. Aşağıdaki örnek bunu göstermektedir.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
Ayrıca bir yapı dizisi de bildirebilirsiniz. Aşağıdaki örnek bunu göstermektedir.
Dim allSystems(100) As systemInfo
Bu veri mimarisinin bileşenlerine erişmek için aynı kuralları izlersiniz. Aşağıdaki örnek bunu göstermektedir.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Yapılar ve Nesneler
Bir yapı, bir veya daha fazla öğesi olarak bir nesne içerebilir. Aşağıdaki örnek bunu göstermektedir.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Böyle bir bildirimde yerine Object
belirli bir nesne sınıfı kullanmalısınız.
Yapılar ve Yordamlar
Bir yapıyı yordam bağımsız değişkeni olarak geçirebilirsiniz. Aşağıdaki örnek bunu göstermektedir.
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
Yukarıdaki örnek yapıyı başvuruya göre geçirir ve bu da yordamın öğelerini değiştirerek değişikliklerin çağrı kodunda etkili olmasını sağlar. Bir yapıyı bu tür değişikliklere karşı korumak istiyorsanız, değere göre geçirin.
Ayrıca bir yordamdan Function
bir yapı döndürebilirsiniz. Aşağıdaki örnek bunu göstermektedir.
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
Yapılar İçinde Yapılar
Yapılar başka yapılar içerebilir. Aşağıdaki örnek bunu göstermektedir.
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"
Bu tekniği, farklı bir modülde tanımlanan bir yapı içinde bir modülde tanımlanan bir yapıyı kapsüllemek için de kullanabilirsiniz.
Yapılar rastgele derinliğe kadar başka yapılar içerebilir.