İç İç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
, Else
ve End If
örnekleri If
vurgulanı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 With
For 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.
Visual Basic derleyicisi bu tür çakışan denetim yapılarını algılar ve derleme zamanı hatasına işaret eder.