Instruções no Visual Basic
Uma instrução no Visual Basic é completa. Ela pode conter palavras-chave, operadores, variáveis, constantes e expressões. Cada instrução pertence a uma das seguintes categorias:
Instruções de declaração, que nomeia uma variável, constante ou procedimento, e também podem especificar um tipo de dados.
Instruções executáveis, que iniciam ações. Essas instruções podem chamar um método ou função e podem fazer loop ou ramificar por meio de blocos de código. As instruções executáveis incluem Instruções de Atribuição, que atribuem um valor ou uma expressão a uma variável ou constante.
Este tópico descreve cada categoria. Além disso, este tópico descreve como combinar várias instruções em uma única linha e como continuar uma instrução em várias linhas.
Instruções de declaração
Você usa instruções de declaração para nomear e definir procedimentos, variáveis, propriedades, matrizes e constantes. Ao declarar um elemento de programação, você também pode definir seu tipo de dados, nível de acesso e escopo. Para obter mais informações, consulte Características do Elemento Declarado.
O exemplo a seguir contém três classes, , e .
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
A primeira declaração é a instrução Sub
. Juntamente com a instrução correspondente End Sub
, ele declara um procedimento chamado applyFormat
. Ele também especifica que applyFormat
é Public
, o que significa que qualquer código que possa se referir a ele pode chamá-lo.
A segunda declaração é a instrução Const
, que declara a constante limit
, especificando o tipo de dados Integer
e um valor de 33.
A terceira declaração é a Dim
instrução, que declara a variável thisWidget
. O tipo de dados é um objeto específico, ou seja, um objeto criado com base na classe Widget
. Você pode declarar uma variável como de qualquer tipo de dados elementar ou de qualquer tipo de objeto exposto no aplicativo que você está usando.
Valores iniciais
Quando o código que contém uma instrução de declaração é executado, o Visual Basic reserva a memória necessária para o elemento declarado. Se o elemento tiver um valor, o Visual Basic o inicializará para o valor padrão de seu tipo de dados. Para obter mais informações, consulte "Comportamento" na Instrução Dim.
Você pode atribuir um valor inicial a uma variável como parte de sua declaração, como ilustra o exemplo a seguir.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Se uma variável for uma variável de objeto, você poderá criar explicitamente uma instância de sua classe ao declará-la usando a palavra-chave Novo Operador, como ilustra o exemplo a seguir.
Dim f As New FileInfo("filename")
Observe que o valor inicial especificado em uma instrução de declaração não é atribuído a uma variável até que a execução atinja sua instrução de declaração. Até esse momento, a variável contém o valor padrão para seu tipo de dados.
Instruções executáveis
Uma instrução executável executa uma ação. Ele pode chamar um procedimento, ramificar para outro lugar no código, fazer loop por várias instruções ou avaliar uma expressão. Uma instrução de atribuição é um caso especial de uma instrução executável.
O exemplo a seguir usa uma estrutura If...Then...Else
de controle para executar diferentes blocos de código com base no valor de uma variável. Em cada bloco de código, um loop For...Next
executa um número especificado de vezes.
Public Sub StartWidget(ByVal aWidget As widget,
ByVal clockwise As Boolean, ByVal revolutions As Integer)
Dim counter As Integer
If clockwise = True Then
For counter = 1 To revolutions
aWidget.SpinClockwise()
Next counter
Else
For counter = 1 To revolutions
aWidget.SpinCounterClockwise()
Next counter
End If
End Sub
A instrução If
no exemplo anterior verifica o valor do parâmetro clockwise
. Se o valor for True
, ele chamará o método spinClockwise
de aWidget
. Se o valor for False
, ele chamará o método spinCounterClockwise
de aWidget
. A estrutura If...Then...Else
de controle termina com End If
.
O loop For...Next
em cada bloco chama o método apropriado várias vezes igual ao valor do revolutions
parâmetro.
Instruções de atribuição
As instruções de atribuição executam operações de atribuição, que consistem em pegar o valor no lado direito do operador de atribuição (=
) e armazená-lo no elemento à esquerda, como no exemplo a seguir.
v = 42
No exemplo anterior, a instrução de atribuição armazena o valor literal 42 na variável v
.
Elementos de programação qualificados
O elemento de programação no lado esquerdo do operador de atribuição deve ser capaz de aceitar e armazenar um valor. Isso significa que ele deve ser uma variável ou propriedade que não seja ReadOnly ou deve ser um elemento de matriz. No contexto de uma instrução de atribuição, esse elemento às vezes é chamado de lvalue, para "valor esquerdo".
O valor no lado direito do operador de atribuição é gerado por uma expressão, que pode consistir em qualquer combinação de literais, constantes, variáveis, propriedades, elementos de matriz, outras expressões ou chamadas de função. O exemplo a seguir ilustra essa situação.
x = y + z + FindResult(3)
O exemplo anterior adiciona o valor mantido na variável y
ao valor mantido na variável z
e, em seguida, adiciona o valor retornado pela chamada à função findResult
. O valor total dessa expressão é armazenado em variável x
.
Tipos de dados em instruções de atribuição
Além dos valores numéricos, o operador de atribuição também pode atribuir valores String
, como ilustra o exemplo a seguir.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
Você também pode atribuir valores Boolean
, usando um literal Boolean
ou uma expressão Boolean
, como ilustra o exemplo a seguir.
Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.
Da mesma forma, você pode atribuir valores apropriados a elementos de programação do tipo de dados Char
, Date
ou Object
. Você também pode atribuir uma instância de objeto a um elemento declarado como sendo da classe da qual essa instância é criada.
Instruções de atribuição composta
As instruções de atribuição composta primeiro executam uma operação em uma expressão antes de atribuí-la a um elemento de programação. O exemplo a seguir ilustra um desses operadores, +=
, que incrementa o valor da variável no lado esquerdo do operador pelo valor da expressão à direita.
n += 1
O exemplo anterior adiciona 1 ao valor de n
, e armazena esse novo valor em n
. É um equivalente abreviado da seguinte instrução:
n = n + 1
Uma variedade de operações de atribuição composta pode ser executada usando operadores desse tipo. Para obter uma lista desses operadores e mais informações sobre eles, consulte Operadores de Atribuição.
O operador de atribuição de concatenação (&=
) é útil para adicionar uma cadeia de caracteres ao final de cadeias de caracteres já existentes, como ilustra o exemplo a seguir.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Conversões de tipo em instruções de atribuição
O valor atribuído a uma variável, propriedade ou elemento de matriz deve ser de um tipo de dados apropriado para esse elemento de destino. Em geral, você deve tentar gerar um valor do mesmo tipo de dados que o do elemento de destino. No entanto, alguns tipos podem ser convertidos em outros tipos durante a atribuição.
Para obter informações sobre como converter entre tipos de dados, consulte Conversões de tipo no Visual Basic. Resumidamente, o Visual Basic converte automaticamente um valor de um determinado tipo em qualquer outro tipo no qual ele é expandido. Uma conversão de expansão é aquela em que sempre é bem-sucedida no tempo de execução e não perde nenhum dado. Por exemplo, o Visual Basic converte um valor Integer
para Double
, quando apropriado, porque Integer
é expandido para Double
. Para obter mais informações, consulte Ampliando e restringindo conversões.
As conversões de restrição (aquelas que não estão expandido) correm o risco de ter falhas em tempo de execução ou perda de dados. Você pode executar uma conversão de estreitamento explicitamente usando uma função de conversão de tipo ou direcionar o compilador para executar todas as conversões implicitamente definindo Option Strict Off
. Para obter mais informações, consulte Conversões implícitas e explícitas.
Colocando várias instruções em uma linha
Você pode ter várias instruções em uma única linha separadas pelo caractere dois-pontos (:
). O exemplo a seguir ilustra essa situação.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Embora ocasionalmente conveniente, essa forma de sintaxe torna seu código difícil de ler e manter. Portanto, é recomendável manter uma instrução em uma linha.
Continuando uma instrução em várias linhas
Uma instrução geralmente se encaixa em uma linha, mas quando é muito longa, você pode continuar na próxima linha usando uma sequência de continuação de linha, que consiste em um espaço seguido por um caractere sublinhado (_
) seguido por um retorno de carro. No exemplo a seguir, a instrução MsgBox
executável é continuada em duas linhas.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Continuação de linha implícita
Em muitos casos, você pode continuar uma instrução na próxima linha consecutiva sem usar o caractere de sublinhado (_
). Os elementos de sintaxe a seguir continuam implicitamente a instrução na próxima linha de código.
Após uma vírgula (
,
). Por exemplo:Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
Após um parêntese aberto (
(
) ou antes de um parêntese de fechamento ()
). Por exemplo:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Depois de uma chave aberta (
{
) ou antes de uma chave}
de fechamento (). Por exemplo:Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Para obter mais informações, consulte Inicializadores de Objeto: Tipos Nomeados e Anônimos ou Inicializadores de Coleção.
Após uma expressão inserida aberta (
<%=
) ou antes do fechamento de uma expressão inserida (%>
) dentro de um literal XML. Por exemplo:Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Para obter mais informações, consulte Expressões Inseridas em XML.
Após o operador de concatenação (
&
). Por exemplo:cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Para obter mais informações, consulte Operadores Listados pela Funcionalidade.
Após operadores de atribuição (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Por exemplo:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Para obter mais informações, consulte Operadores Listados pela Funcionalidade.
Após operadores binários (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,Like
,Xor
) dentro de uma expressão. Por exemplo:Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Para obter mais informações, consulte Operadores Listados pela Funcionalidade.
Depois dos operadores
Is
eIsNot
. Por exemplo:If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Para obter mais informações, consulte Operadores Listados pela Funcionalidade.
Após um caractere qualificador de membro (
.
) e antes do nome do membro. Por exemplo:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
No entanto, você deve incluir um caractere de continuação de linha (
_
) seguindo um caractere de qualificador de membro quando estiver usando a instruçãoWith
ou fornecendo valores na lista de inicialização para um tipo. Considere quebrar a linha após o operador de atribuição (por exemplo,=
) quando você estiver usando instruçõesWith
ou listas de inicialização de objeto. Por exemplo:' Not allowed: ' Dim aType = New With { . ' PropertyName = "Value" ' Allowed: Dim aType = New With {.PropertyName = "Value"} Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End With
Para obter mais informações, consulte Instrução Com...Terminar Com ou Inicializadores de Objeto: Tipos Nomeados e Anônimos.
Após um qualificador de propriedade do eixo XML (
.
,.@
ou...
). No entanto, você deve incluir um caractere de continuação de linha (_
) ao especificar um qualificador de membro quando estiver usando a palavra-chaveWith
. Por exemplo:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Para obter mais informações, consulte Propriedade de Eixo XML.
Depois de um sinal menor que (<) ou antes de um sinal maior que (
>
) quando você especifica um atributo. Também após um sinal maior que (>
) quando você especifica um atributo. No entanto, você deve incluir um caractere de continuação de linha (_
) ao especificar atributos de nível de assembly ou módulo. Por exemplo:< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Para saber mais, confira Visão geral de Atributos.
Operadores de consulta antes e depois (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
eDescending
). Não é possível quebrar uma linha entre as palavras-chave dos operadores de consulta que são compostos por várias palavras-chave (Order By
,Group Join
,Take While
eSkip While
). Por exemplo:Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Para obter mais informações, confira Consultas.
Após a palavra-chave
In
em uma instruçãoFor Each
. Por exemplo:For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Para obter mais informações, consulte Para cada... Próxima instrução.
Após a palavra-chave
From
em um inicializador de coleção. Por exemplo:Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Para obter mais informações, consulte Inicializadores de coleção.
Como adicionar comentários
O código-fonte nem sempre é autoexplicativo, mesmo para o programador que o escreveu. Para ajudar a documentar seu código, portanto, a maioria dos programadores faz uso liberal de comentários inseridos. Os comentários no código podem explicar um procedimento ou uma instrução específica para qualquer pessoa que esteja lendo ou trabalhando com ele mais tarde. O Visual Basic ignora os comentários durante a compilação e eles não afetam o código compilado.
As linhas de comentário começam com um apóstrofo ('
) ou REM
seguido por um espaço. Elas podem ser adicionadas em qualquer lugar no código, exceto dentro de uma cadeia de caracteres. Para acrescentar um comentário a uma instrução, insira um apóstrofo ou REM
após a instrução, seguido do comentário. Os comentários também podem ir em sua própria linha separada. O exemplo a seguir demonstra essas possibilidades.
' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.
Verificando erros de compilação
Se, depois de digitar uma linha de código, a linha for exibida com um sublinhado azul ondulado (uma mensagem de erro também poderá aparecer), haverá um erro de sintaxe na instrução. Você deve descobrir o que há de errado com a instrução (examinando na lista de tarefas ou passando o mouse sobre o erro com o ponteiro do mouse e lendo a mensagem de erro) e corrigi-la. Até que você tenha corrigido todos os erros de sintaxe em seu código, o programa não será compilado corretamente.
Seções relacionadas
Termo | Definição |
---|---|
Operadores de Atribuição | Fornece links para páginas de referência de idioma que abrangem operadores de atribuição, como = , *= e &= . |
Operadores e Expressões | Mostra como combinar elementos com operadores para gerar novos valores. |
Como: Quebrar e combinar instruções no código | Mostra como dividir uma única instrução em várias linhas e como colocar várias instruções na mesma linha. |
Como: Rotular instruções | Mostra como rotular uma linha de código. |