İç İçe Geçmiş Denetim Yapıları (Visual Basic)

Denetim deyimlerini, döngü içindeki bir If...Then...Else blok gibi diğer denetim deyimlerinin içine For...Next yerleştirebilirsiniz. Başka bir denetim deyiminin içine yerleştirilmiş bir denetim deyiminin iç içe geçmiş olduğu söylenir.

İç İç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 deyimlerde If deyimler End If otomatik olarak en yakın önceki If deyime uygulanır. İç içe Do döngüler benzer şekilde çalışır ve en Loop içteki deyim en Do içteki deyimle eşleşmektedir.

Not

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 yapıya tıkladığınızdaIf, inşaattaki tüm , Then, ElseIf, Elseve End If örnekleri Ifvurgulanır.If...Then...Else 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 WithFor Each blok ve bloğun içinde iç içe If bloklar With 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ı

Denetim yapılarını çakışamazsınız. 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, iç With blok sonlandırilmeden önce döngü sonlandırılır çünkü For aşağıdaki düzenleme geçersizdir.

Diagram that shows an example of invalid nesting.

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

Ayrıca bkz.