Vnořené řídicí struktury (Visual Basic)
Řídicí příkazy můžete umístit do jiných řídicích příkazů, například If...Then...Else
do bloku ve smyčce For...Next
. Řídicí příkaz umístěný uvnitř jiného řídicího příkazu je vnořený.
Úrovně vnoření
Řídicí struktury v jazyce Visual Basic lze vnořit na libovolný počet úrovní. Běžně se doporučuje, aby vnořené struktury byly čitelnější odsazením těla každého z nich. Editor integrovaného vývojového prostředí (IDE) to udělá automaticky.
V následujícím příkladu procedura sumRows
sečte kladné prvky každého řádku matice.
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
V předchozím příkladu první Next
příkaz zavře vnitřní For
smyčku a poslední Next
příkaz zavře vnější For
smyčku.
Podobně v vnořených If
příkazech se End If
příkazy automaticky použijí na nejbližší předchozí If
příkaz. Vnořené Do
smyčky fungují podobným způsobem, přičemž nejvnitřnější Loop
příkaz odpovídá příkazu innermost Do
.
Poznámka:
U mnoha řídicích struktur se po kliknutí na klíčové slovo zvýrazní všechna klíčová slova ve struktuře. Když například kliknete If
na If...Then...Else
výstavbu, zvýrazní se všechny výskyty If
, Then
, ElseIf
, Else
a End If
v konstrukci. Pokud chcete přejít na další nebo předchozí zvýrazněné klíčové slovo, stiskněte kombinaci kláves CTRL+SHIFT+ŠIPKA DOLŮ nebo CTRL+SHIFT+ŠIPKA NAHORU.
Vnoření různých druhů řídicích struktur
Jeden druh řídicí struktury můžete vnořit do jiného typu. Následující příklad používá With
blok uvnitř For Each
smyčky a vnořené If
bloky uvnitř With
bloku.
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
Překrývající se řídicí struktury
Řídicí struktury nelze překrývat. To znamená, že jakákoli vnořená struktura musí být zcela obsažena v další vnitřní struktuře. Například následující uspořádání je neplatné, protože smyčka For
se ukončí před ukončením vnitřního With
bloku.
Kompilátor jazyka Visual Basic zjistí takové překrývající se řídicí struktury a signalizuje chybu v době kompilace.