Instruções no Visual Basic
Uma instrução no Visual Basic é uma instrução completa. Pode conter palavras-chave, operadores, variáveis, constantes e expressões. Cada declaração pertence a uma das seguintes categorias:
Instruções de declaração, que nomeiam 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 ramificação através de blocos de código. As instruções executáveis incluem instruções de atribuição, que atribuem um valor ou 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.
Declaraçõ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 declarações.
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 Sub
declaração. Juntamente com a sua declaração correspondente End Sub
, declara um procedimento denominado 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 Const
instrução, que declara a constante limit
, especificando o Integer
tipo de dados e um valor de 33.
A terceira declaração é a Dim
declaração, que declara a variável thisWidget
. O tipo de dados é um objeto específico, ou seja, um objeto criado a partir da Widget
classe. Você pode declarar uma variável como sendo 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 contém um valor, o Visual Basic o inicializa com o valor padrão para seu tipo de dados. Para obter mais informações, consulte "Comportamento" em Dim Statement.
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 New Operator , 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, percorrer 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 If...Then...Else
estrutura de controle para executar diferentes blocos de código com base no valor de uma variável. Dentro de cada bloco de código, um For...Next
loop é executado 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 If
instrução no exemplo anterior verifica o valor do parâmetro clockwise
. Se o valor for True
, ele chamará o spinClockwise
método de aWidget
. Se o valor for False
, ele chamará o spinCounterClockwise
método de aWidget
. A If...Then...Else
estrutura de controlo termina com End If
.
O For...Next
loop dentro de cada bloco chama o método apropriado um número de vezes igual ao valor do revolutions
parâmetro.
Declarações de atribuição
As instruções de atribuição realizam 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 assignment armazena o valor literal 42 na variável v
.
Elementos de programação elegíveis
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 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, tal 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 isso.
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 função call to findResult
. O valor total desta expressão é então armazenado na 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 String
valores, 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 Boolean
valores, usando um Boolean
literal ou uma Boolean
expressão, 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 , ou Object
tipo de Char
Date
dados. Você também pode atribuir uma instância de objeto a um elemento declarado como sendo da classe a partir da qual essa instância é criada.
Declarações de atribuição compostas
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 afirmaçã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. Em resumo, Visual Basic converte automaticamente um valor de um determinado tipo para qualquer outro tipo para o qual ele amplia. Uma conversão de ampliação é aquela em que sempre é bem-sucedida em tempo de execução e não perde nenhum dado. Por exemplo, Visual Basic converte um Integer
valor para Double
quando apropriado, porque Integer
amplia para Double
. Para obter mais informações, consulte Ampliando e restringindo conversões.
O estreitamento das conversões (aquelas que não estão aumentando) acarreta um risco de falha em tempo de execução ou de perda de dados. Você pode executar uma conversão de estreitamento explicitamente usando uma função de conversão de tipo, ou você pode 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.
Colocar 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 isso.
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. Assim, recomenda-se que você mantenha uma declaração em uma linha.
Continuar uma declaração em várias linhas
Uma instrução geralmente se encaixa em uma linha, mas quando é muito longa, você pode continuá-la para a próxima linha usando uma sequência de continuação de linha, que consiste em um espaço seguido por um caractere de sublinhado (_
) seguido por um retorno de carro. No exemplo a seguir, a instrução executável é continuada MsgBox
em duas linhas.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Continuação implícita da linha
Em muitos casos, você pode continuar uma instrução na próxima linha consecutiva sem usar o caractere de sublinhado (_
). Os seguintes elementos de sintaxe implicitamente continuam a instrução na próxima linha de código.
Depois de 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 fecho ()
). Por exemplo:Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Depois de uma cinta encaracolado aberta (
{
) ou antes de uma cinta de fecho (}
). 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 incorporada aberta (
<%=
) ou antes do fechamento de uma expressão incorporada (%>
) 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 incorporadas 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 por funcionalidade.
Após a atribuição de operadores (, , , , ,
*=
-=
,/=
,\=
,^=
,>>=
<<=
, , ).+=
:=
&=
=
Por exemplo:Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Para obter mais informações, consulte Operadores listados por funcionalidade.
Depois de operadores binários (
+
,-
,/
,*
,Mod
,>
>=
<>
<=
<
,OrElse
Like
^
<<
Xor
>>
And
AndAlso
Or
) 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 por funcionalidade.
Depois do
Is
eIsNot
operadores. 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 por funcionalidade.
Depois de 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 (
_
) após um caractere qualificador de membro quando estiver usando aWith
instrução ou fornecendo valores na lista de inicialização de um tipo. Considere quebrar a linha após o operador de atribuição (por exemplo,=
) quando estiver usandoWith
instruções ou listas de inicialização de objetos. 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 Com... Termine com inicializadores de instrução ou 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 aWith
palavra-chave. Por exemplo:Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Para obter mais informações, consulte Propriedades do 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 montagem ou nível de 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 obter mais informações, consulte Visão geral de atributos.
Antes e depois dos operadores de consulta (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Order By
Let
Skip While
Take
Skip
Take While
Where
Select
Join
Into
On
In
Ascending
e ).Descending
Não é possível quebrar uma linha entre as palavras-chave dos operadores de consulta que são compostas 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, consulte Consultas.
Depois da
In
palavra-chave em umaFor Each
instrução. 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 um... Próxima declaração.
Depois da
From
palavra-chave 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.
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 incorporados. Os comentários no código podem explicar um procedimento ou uma instrução específica para qualquer pessoa que leia ou trabalhe com ele mais tarde. Visual Basic ignora 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
são seguidas por um espaço. Eles podem ser adicionados em qualquer lugar no código, exceto dentro de uma cadeia de caracteres. Para acrescentar um comentário a uma declaração, insira um apóstrofo ou REM
após a declaraçã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.
Verificação de 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 pode aparecer), há um erro de sintaxe na instrução. Você deve descobrir o que está errado com a instrução (olhando na lista de tarefas, ou passando o mouse sobre o erro com o ponteiro do mouse e lendo a mensagem de erro) e corrigi-lo. Até que você tenha corrigido todos os erros de sintaxe em seu código, seu programa não conseguirá compilar corretamente.
Secçõ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: Etiquetar declarações | Mostra como rotular uma linha de código. |