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 ze, 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 CharDatedados. 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 ne 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, >>=<><=<, OrElseLike^<<Xor>>AndAndAlsoOr) 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 e IsNot 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 a With 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 usando With 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 a With 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 ByLetSkip WhileTakeSkipTake WhileWhereSelectJoinIntoOnInAscendinge ).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, e Skip 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 uma For 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.

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.