#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 True
False
.
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 #If
forma dyrektyw , #Else
, #ElseIf
i #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