Diretivas #If...Then...#Else
Compila condicionalmente blocos selecionados do código do Visual Basic.
Sintaxe
#If expression Then
statements
[ #ElseIf expression Then
[ statements ]
...
#ElseIf expression Then
[ statements ] ]
[ #Else
[ statements ] ]
#End If
Partes
expression
Necessário para as instruções #If
e #ElseIf
, opcional em outros lugares. Qualquer expressão que consista exclusivamente em uma ou mais constantes condicionais do compilador, literais e operadores, que sejam avaliadas como True
ou False
.
statements
Necessário para o bloco de instruções #If
, opcional em outros lugares. Linhas de programa ou diretivas do compilador do Visual Basic que são compiladas se a expressão associada for avaliada como True
.
#End If
Encerra o bloco de instruções #If
.
Comentários
Na superfície, o comportamento das diretivas #If...Then...#Else
aparece o mesmo que o das instruções If...Then...Else
. No entanto, as diretivas #If...Then...#Else
avaliam o que é compilado pelo compilador, enquanto as instruções If...Then...Else
avaliam as condições em tempo de execução.
A compilação condicional normalmente é usada para compilar o mesmo programa para diferentes plataformas. Ela também é usada para impedir que o código de depuração apareça em um arquivo executável. O código excluído durante a compilação condicional é completamente omitido do arquivo executável final, portanto, ele não tem efeito sobre o tamanho ou o desempenho.
Independentemente do resultado de qualquer avaliação, todas as expressões são avaliadas usando Option Compare Binary
. A instrução Option Compare
não afeta expressões nas instruções #If
e #ElseIf
.
Observação
Não existe nenhuma forma de linha única das diretivas #If
, #Else
, #ElseIf
e #End If
. Nenhum outro código pode aparecer na mesma linha que qualquer uma das diretivas.
As instruções dentro de um bloco de compilação condicional devem ser instruções lógicas completas. Por exemplo, você não pode compilar condicionalmente apenas os atributos de uma função, mas pode declarar condicionalmente a função junto com seus atributos:
#If DEBUG Then
<WebMethod()>
Public Function SomeFunction() As String
#Else
<WebMethod(CacheDuration:=86400)>
Public Function SomeFunction() As String
#End If
Exemplo
Este exemplo usa o constructo #If...Then...#Else
para determinar se é necessário compilar determinadas instruções.
#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