Aracılığıyla paylaş


İç İçe Denetim Yapıları (Visual Basic)

Denetim deyimlerini, örneğin bir For...Next döngü içinde bir If...Then...Else blok gibi diğer denetim deyimlerinin içine yerleştirebilirsiniz. Başka bir denetim deyiminin içine yerleştirilen bir denetim deyimi iç içe geçmiş olarak adlandırılır.

İç İçe Yerleştirme Düzeyleri

Visual Basic'teki denetim yapıları istediğiniz sayıda düzeye iç içe yerleştirilebilir. İç içe yapıların her birinin gövdesini girintileyerek daha okunabilir hale getirmek yaygın bir uygulamadır. Tümleşik geliştirme ortamı (IDE) düzenleyicisi bunu otomatik olarak yapar.

Aşağıdaki örnekte yordam sumRows , matrisin her satırının pozitif öğelerini bir araya ekler.

Public Sub sumRows(ByVal a(,) As Double, ByRef r() As Double)  
    Dim i, j As Integer  
    For i = 0 To UBound(a, 1)  
        r(i) = 0  
        For j = 0 To UBound(a, 2)  
            If a(i, j) > 0 Then  
                r(i) = r(i) + a(i, j)  
            End If  
        Next j  
    Next i  
End Sub  

Yukarıdaki örnekte, ilk Next deyim iç For döngü ve son Next deyim dış For döngü kapatır.

Benzer şekilde, iç içe If ifadelerde, End If ifadeler otomatik olarak en yakın önceki If ifadesine uygulanır. İç içe Do döngüler benzer şekilde çalışır ve en Loop içteki ifade en Do içteki ifade ile eşleşmektedir.

Uyarı

Birçok denetim yapısı için, bir anahtar sözcüğü tıklattığınızda, yapıdaki tüm anahtar sözcükler vurgulanır. Örneğin, bir If...Then...Else yapısında If'ya tıkladığınızda, yapının içindeki tüm If, Then, ElseIf, Else ve End If örnekleri vurgulanır. Bir sonraki veya önceki vurgulanmış anahtar sözcüğüne gitmek için CTRL+SHIFT+AŞAĞI OK veya CTRL+SHIFT+YUKARI OK tuşlarına basın.

Farklı Denetim Yapılarını İç İçe Yerleştirme

Bir tür denetim yapısını başka bir tür içinde iç içe yerleştirebilirsiniz. Aşağıdaki örnekte bir döngü içinde bir With bloğu ve With bloğunun içinde iç içe If bloklar kullanılır.

For Each ctl As System.Windows.Forms.Control In Me.Controls  
    With ctl  
        .BackColor = System.Drawing.Color.Yellow  
        .ForeColor = System.Drawing.Color.Black  
        If .CanFocus Then  
            .Text = "Colors changed"  
            If Not .Focus() Then  
                ' Insert code to process failed focus.  
            End If  
        End If  
    End With  
Next ctl  

Çakışan Denetim Yapıları

Kontrol yapıları üst üste gelemez. Bu, iç içe yerleştirilmiş herhangi bir yapının bir sonraki en iç yapı içinde tamamen yer alması gerektiği anlamına gelir. Örneğin, aşağıdaki düzenleme geçersizdir çünkü For döngüsü iç With blok sonlandırılmadan önce sona ermektedir.

Geçersiz iç içe yapı örneğini gösteren diyagram.

Visual Basic derleyicisi bu tür çakışan denetim yapılarını algılar ve derleme zamanı hatasına işaret eder.

Ayrıca bakınız