Aracılığıyla paylaş


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.

Uyarı

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 örnekte bu gösterilmektedir.

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 örnekte bu gösterilmektedir.

Dim mySystem As systemInfo  
ReDim mySystem.diskDrives(3)  
mySystem.diskDrives(0) = "1.44 MB"  

Ayrıca bir yapı dizisi de bildirebilirsiniz. Aşağıdaki örnekte bu gösterilmektedir.

Dim allSystems(100) As systemInfo  

Bu veri mimarisinin bileşenlerine erişmek için aynı kuralları izlersiniz. Aşağıdaki örnekte bu gösterilmektedir.

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 örnekte bu gösterilmektedir.

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 Objectbelirli bir nesne sınıfı kullanmalısınız.

Yapılar ve Yordamlar

Bir yapıyı prosedür bağımsız değişkeni olarak geçirebilirsiniz. Aşağıdaki örnekte bu gösterilmektedir.

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ı referans yoluyla iletir, 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ğer olarak iletin.

Bir yapı ayrıca Function yordamından döndürülebilir. Aşağıdaki örnekte bu gösterilmektedir.

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 örnekte bu gösterilmektedir.

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.

Ayrıca bakınız