Udostępnij za pośrednictwem


#If...Then...#Else — Dyrektywy

Warunkowo kompiluje wybrane bloki kodu Visual Basic.

Składnia

#If expression Then
   statements
[ #ElseIf expression Then
   [ statements ]
...
#ElseIf expression Then
   [ statements ] ]
[ #Else
   [ statements ] ]
#End If

generatora

expression
Wymagane dla instrukcji #If i #ElseIf , opcjonalne gdzie indziej. Dowolne wyrażenie składające się wyłącznie z co najmniej jednej stałej, literałów i operatorów kompilatora warunkowego, które oblicza wartość lub TrueFalse.

statements
Wymagane dla #If bloku instrukcji, opcjonalnego gdzie indziej. Wiersze programu Visual Basic lub dyrektywy kompilatora, które są kompilowane, jeśli skojarzone wyrażenie zwróci wartość True.

#End If
Kończy blok instrukcji #If .

Uwagi

Na powierzchni zachowanie #If...Then...#Else dyrektyw wygląda tak samo jak w przypadku instrukcji If...Then...Else . Jednak dyrektywy oceniają, #If...Then...#Else co jest kompilowane przez kompilator, podczas gdy If...Then...Else instrukcje oceniają warunki w czasie wykonywania.

Kompilacja warunkowa jest zwykle używana do kompilowania tego samego programu dla różnych platform. Służy również do zapobiegania wyświetlaniu kodu debugowania w pliku wykonywalnym. Kod wykluczony podczas kompilacji warunkowej jest całkowicie pomijany z końcowego pliku wykonywalnego, więc nie ma wpływu na rozmiar ani wydajność.

Niezależnie od wyniku oceny wszystkie wyrażenia są oceniane przy użyciu metody Option Compare Binary. Instrukcja Option Compare nie ma wpływu na wyrażenia w instrukcjach #If i .#ElseIf

Uwaga

Nie istnieje żadna jednowierszowa #Ifforma dyrektyw , #Else, #ElseIfi #End If . Żaden inny kod nie może występować w tym samym wierszu co dowolne dyrektywy.

Instrukcje w bloku kompilacji warunkowej muszą być kompletnymi instrukcjami logicznymi. Na przykład nie można warunkowo skompilować tylko atrybutów funkcji, ale można warunkowo zadeklarować funkcję wraz z jej atrybutami:

#If DEBUG Then
<WebMethod()>
Public Function SomeFunction() As String
#Else
<WebMethod(CacheDuration:=86400)>
Public Function SomeFunction() As String
#End If

Przykład

W tym przykładzie użyto #If...Then...#Else konstrukcji , aby określić, czy skompilować określone instrukcje.

#Const CustomerNumber = 36
#If CustomerNumber = 35 Then
        ' Insert code to be compiled for customer # 35.
#ElseIf CustomerNumber = 36 Then
        ' Insert code to be compiled for customer # 36.
#Else
        ' Insert code to be compiled for all other customers.
#End If

Zobacz też