Ha... Akkor... Else utasítás (Visual Basic)

Feltételesen végrehajt egy utasításcsoportot egy kifejezés értékétől függően.

Syntax

' Multiline syntax:
If condition [ Then ]
    [ statements ]
[ ElseIf elseifcondition [ Then ]
    [ elseifstatements ] ]
[ Else
    [ elsestatements ] ]
End If

' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]

Ez a cikk több példát is tartalmaz, amelyek a If...Then...Else Nyilatkozatot:

Részek

condition
Szükséges. Kifejezés. A kiértékelésnek TrueFalseimplicit módon átalakítható adattípusra vagy adattípusra kell kiértékelnie Boolean.

Ha a kifejezés null értékűBoolean változó, amely a Semmi értéket értékeli ki, a rendszer úgy kezeli a feltételt, mintha a kifejezés Falselenne, és a ElseIf blokkokat kiértékeli, ha léteznek, vagy ha létezik, a Else blokk végrehajtásra kerül.

Then
Kötelező az egysoros szintaxisban; nem kötelező a többsoros szintaxisban.

statements
Opcionális. A következő IfThen egy vagy több ... utasítás, amely akkor lesz végrehajtva, ha condition a kiértékelése a következő leszTrue: .

elseifcondition
ElseIf Ha jelen van, kötelező megadni. Kifejezés. A kiértékelésnek TrueFalseimplicit módon átalakítható adattípusra vagy adattípusra kell kiértékelnie Boolean.

elseifstatements
Opcionális. A következő ElseIfThen egy vagy több ... utasítás, amely akkor lesz végrehajtva, ha elseifcondition a kiértékelése a következő leszTrue: .

elsestatements
Opcionális. Egy vagy több olyan utasítás, amely akkor lesz végrehajtva, ha egy korábbi condition vagy elseifcondition kifejezés sem értékeli ki a következőt True: .

End If
Leállítja a többsorosThen ...If...Else Blokk.

Megjegyzések

Többsoros szintaxis

Amikor egy If...Then...Else az utasítást észlelte, condition tesztelte. Ha condition igen True, a rendszer végrehajtja az alábbi Then utasításokat. Ha condition igen False, minden ElseIf utasítás (ha van ilyen) kiértékelése sorrendben történik. Ha talál egy Trueelseifcondition parancsot, a rendszer végrehajtja azokat az utasításokat, amelyek közvetlenül a társított ElseIf után következnek. Ha a rendszer nem elseifcondition értékeli ki a Truekövetkezőt, vagy ha nincsenek ElseIf utasítások, az alábbi Else utasítások lesznek végrehajtva. Az alábbi ThenElseIfElseutasítások végrehajtása után a végrehajtás a következő End Ifutasítással folytatódik.

A ElseIf záradékok és Else a záradékok egyaránt választhatók. Annyi záradékkal rendelkezhetElseIf, amennyit csak szeretne egy If...Then...Else utasítást, de egy záradék után Else nem ElseIf jelenhet meg záradék. If...Then...Else utasítások egymásba ágyazhatók.

A többsoros szintaxisban az If utasításnak kell lennie az egyetlen utasításnak az első sorban. A ElseIf, Elseés End If az utasítások csak vonalcímkével előzhetők meg. A If...Then...Else a blokknak utasítással End If kell végződnie.

Tipp.

A Kijelölés... Az esetkimutatás akkor lehet hasznosabb, ha több lehetséges értékkel rendelkező kifejezést értékel ki.

Egysoros szintaxis

Az egysoros szintaxist használhatja egyetlen feltételhez, és a kódot végrehajthatja, ha az igaz. A többsoros szintaxis azonban több struktúrát és rugalmasságot biztosít, és könnyebben olvasható, karbantartható és hibakeresésre használható.

Az alábbiakban a Then kulcsszót vizsgáljuk annak megállapításához, hogy egy utasítás egysoros-e If. Ha egy megjegyzésen kívül más is megjelenik Then ugyanazon a sorban, az utasítás egysoros If utasításként lesz kezelve. Ha Then hiányzik, akkor egy többsoros If...Then...Else.

Az egysoros szintaxisban több utasítást is végrehajthat egy If...Then döntés eredményeként. Minden utasításnak ugyanazon a sorban kell lennie, és kettőspontokkal kell elválasztani.

Példa többsoros szintaxisra

Az alábbi példa a ... többsoros szintaxisának használatát szemlélteti.IfThen...Else Nyilatkozatot.

'Create a Random object to seed our starting value 
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)

Dim message As String

'If count is zero, output will be no items
If count = 0 Then
    message = "There are no items."
    'If count is 1, output will be "There is 1 item.".        
ElseIf count = 1 Then
    message = "There is 1 item."
    'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count. 
Else
    message = $"There are {count} items."
End If

Console.WriteLine(message)

'This example displays output like the following:
' There are 4 items.

Példa beágyazott szintaxisra

Az alábbi példa beágyazott If...Then...Else Nyilatkozatok.

Public Sub Main()
    ' Run the function as part of the WriteLine output.
    Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub

Private Function CheckIfTime() As Boolean
    ' Determine the current day of week and hour of day.
    Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
    Dim hour As Integer = DateTime.Now.Hour

    ' Return True if Wednesday from 2 to 3:59 P.M.,
    ' or if Thursday from noon to 12:59 P.M.
    If dayW = DayOfWeek.Wednesday Then
        If hour = 14 Or hour = 15 Then
            Return True
        Else
            Return False
        End If
    ElseIf dayW = DayOfWeek.Thursday Then
        If hour = 12 Then
            Return True
        Else
            Return False
        End If
    Else
        Return False
    End If
End Function

'This example displays output like the following:
'Time Check is False.

Példa egysoros szintaxisra

Az alábbi példa az egysoros szintaxis használatát mutatja be.

Private Sub SingleLine()

    'Create a Random object to seed our starting values 
    Dim randomizer As New Random()

    Dim A As Integer = randomizer.Next(10, 20)
    Dim B As Integer = randomizer.Next(0, 20)
    Dim C As Integer = randomizer.Next(0, 5)

    'Let's display the initial values for comparison
    Console.WriteLine($"A value before If: {A}")
    Console.WriteLine($"B value before If: {B}")
    Console.WriteLine($"C value before If: {C}")

    ' If A > 10, execute the three colon-separated statements in the order
    ' that they appear
    If A > 10 Then A = A + 1 : B = B + A : C = C + B

    'If the condition is true, the values will be different
    Console.WriteLine($"A value after If: {A}")
    Console.WriteLine($"B value after If: {B}")
    Console.WriteLine($"C value after If: {C}")

End Sub

'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21

Lásd még