Instrução Dim (Visual Basic)

Declara e aloca espaço de armazenamento para uma ou mais variáveis.

[ <attributelist> ] [ accessmodifier ] [[ Shared ] [ Shadows ] | [ Static ]] [ ReadOnly ] 
Dim [ WithEvents ] variablelist

Partes

  • attributelist
    Opcional.Veja Lista de Atributos.

  • accessmodifier
    Opcional.Pode ser um dos seguintes:

    SeeNíveis de acesso em Visual Basic.

  • Shared
    Opcional.Consulte Compartilhada.

  • Shadows
    Opcional.Acesse Shadows.

  • Static
    Opcional.See Estático.

  • ReadOnly
    Opcional.See ReadOnly.

  • WithEvents
    Opcional.Especifica que esses são variáveis de objeto referentes às instâncias de uma classe que pode disparar eventos.See WithEvents.

  • variablelist
    Obrigatório.Lista de variáveis sejam declaradas nesta demonstrativo.

    variable [ , variable ... ]

    Cada variable possui a seguinte sintaxe e partes:

    variablename [ ( [ boundslist ] ) ] [ As [ New ] datatype [ With { [ .propertyname = propinitializer [ , ... ] ] } ] ] [ = initializer ]

    Parte

    Descrição

    variablename

    Obrigatório.Nome da variável.SeeNomes de Elementos Declarados.

    boundslist

    Opcional.Lista de limites de cada dimensão de uma variável de matriz.

    New

    Opcional.Cria uma nova instância da classe quando o Dim demonstrativo é executada.

    datatype

    Necessário se Option Strict estiver On.Tipo de dados da variável.

    With

    Opcional.Apresenta a lista de inicializador de objeto.

    propertyname

    Opcional.O nome de uma propriedade na classe estão fazendo uma instância do.

    propinitializer

    Necessário após propertyname =. A expressão é avaliada e atribuída ao nome da propriedade.

    initializer

    Opcional se New não foi especificado. Expressão que é avaliado e atribuído à variável quando ele é criado.

Comentários

Você deve declarar cada variável usar em seu programa, para informar ao compilador do Visual Basic de tipo de dados da variável e outras informações, sistema autônomo qual código pode acesso-lo.O exemplo a seguir declara uma variável para Isenção um Integer valor.

Dim numberOfStudents As Integer

Você pode usar Dim somente no nível de módulo ou procedimento.Isso significa que o contexto da declaração para uma variável deve ser uma classe, estrutura, módulo, procedimento ou bloco, e não pode ser um arquivo fonte, namespace ou interface.Para obter mais informações, consulte Declaração de contextos e níveis de acesso padrão.

If Option Explicit é On (padrão), o compilador requer uma declaração para cada variável que você usar. Se você ativar o Option Explicit Off, o padrão de cada variável não declarada é Tipo de dados Object, que talvez não seja o desejado.

Você pode especificar o tipo de dados de cada variável no Dim demonstrativo. Você também pode especificar um valor inicial.Se você não fizer isso, o Visual Basic usa as configurações padrão.Para obter mais informações, consulte "Regras de tipo de dados" e "Valores padrão" em "Informações detalhadas" nesta página Ajuda.O exemplo a seguir declara e inicializa um String variável.

Dim summary As String = "Summary of results" 

Você pode especificar qual código pode acessar uma variável, fornecendo um accessmodifier no Dim demonstrativo. Para obter mais informações, consulte "Modificadores" e "Nível de acesso" em "Informações detalhadas" nesta página Ajuda.

Você pode declarar uma variável para conter um matriz, que pode conter vários valores.Para obter mais informações, consulte "Regras de array" em "Informações detalhadas" nesta página Ajuda.Para obter mais informações sobre matrizes, consulte Matrizes no Visual Basic. O exemplo a seguir declara um Integer variável de matriz.

Dim days() As Integer 

Em geral, você deve colocar todos os seus Dim instruções no início da região de código em que você usar as variáveis. Para obter mais informações, consulte "Solucionando problemas"em"informações detalhadas do" nesta página Ajuda.

Visual Basic 2008 introduz os inicializadores de objeto usados para declarar as instâncias de tipos nomeados e anônimo e inferência de tipos de tipos local. Para obter mais informações, consulte Tipos anônimos, Inicializadores de objeto: Tipos nomeados e anônimo e Inferência de tipos local.

Informações detalhadas

Esta seção aborda as seguintes áreas em detalhes:

  • Declaração

  • Tipos de dados

  • Matrizes

  • Comportamento

  • Solução de problemas

Regras de declaração

  • Contexto da Declaração. Uma variável declarada no nível de módulo, fora de qualquer procedimento, é um variável de membro or campo; ele é membro da classe, estrutura ou módulo que declara.

    Uma variável declarada no nível de procedimento é um variável local; ele é local para o procedimento ou bloco declara.

  • Atributos. Você pode aplicar atributos apenas para variáveis de membro, não para as variáveis locais.Um atributo contribui informações para metadados do assembly, que não é significativo para armazenamento temporário, sistema autônomo sistema autônomo variáveis locais.

  • Uso implícito de Dim. Se você especificar uma do modificadores Public, Protected, Friend, Protected Friend, Private, Shared, Shadows, Static, ReadOnly, ou WithEvents, opcionalmente, você pode omitir o Dim palavra-chave.

    Public maximumAllowed As Double
    Protected Friend currentUserName As String
    Private salary As Decimal
    Static runningTotal As Integer
    

    No nível de módulo, você não pode usar o Static modificador de declarar variáveis de membro. No nível de procedimento, você não pode usar Shared, Shadows, ReadOnly, WithEvents, ou qualquer acesso modificadores para declarar variáveis locais.

  • Variáveis WithEvents. Você pode especificar WithEvents somente em variáveis-membro, não em variáveis locais dentro de um procedimento.

    Se você especificar WithEvents, o tipo de dados de variáveis deve ser um tipo de classe específica e não Object. Você não pode declarar uma matriz com WithEvents.

    Para mais informações sobre eventos, veja Eventos e manipuladores de eventos.

  • Diversas variáveis. Você pode declarar diversas variáveis na mesma demonstrativo de demonstrativo, especificando o variablename parte para cada um deles e após cada nome de matriz com parênteses. Diversas variáveis são separadas por vírgulas.

    Dim lastTime, nextTime, allTimes() As Date
    

Regras de Tipo de Dados

  • Tipos de dados A instrução Dim pode declarar a tipo de dados de uma variável.Você pode especificar qualquer tipo de dados ou o nome de uma enumeração, estrutura, classe ou interface.

    Dim finished As Boolean
    Dim monitorBox As System.Windows.Forms.Form
    
  • Tipo Padrão. Se você não especificar datatype, a variável tem o tipo de dados do initializer. Se nenhuma das datatype nem initializer está presente, por padrão, é o tipo de dados Tipo de dados Object. Se você especificar datatype e initializer, o tipo de dados do initializer deve ser conversível para datatype.

  • Tipos diferentes. Você pode especificar diferentes tipos de dados de variáveis diferentes usando um separado As cláusula para cada variável declarada. Como alternativa, você pode declarar diversas variáveis para ser do mesmo tipo usando um comuns As cláusula. Cada variável tem o tipo de dados especificado no primeiro As cláusula encontrados após o seu variablename parte.

    Dim a, b, c As Single, x, y As Double, i As Integer
    ' a, b, and c are all Single; x and y are both Double
    
  • Inicialização. The Dim demonstrativo pode inicializar o Sumário das variáveis selecionadas em variablelist. Para um tipo de valor, use initializer Forneça uma expressão a ser atribuído à variável. A expressão deve ser avaliada como uma constante que pode ser calculada em time de compilar.

    Dim quantity As Integer = 10
    Dim message As String = "Just started"
    

    Para um tipo de referência, você usar o New palavra-chave para criar uma nova instância da classe ou estrutura especificado por datatype. Se você usar New, você não usar um initializer expressão. Em vez disso, você fornecer argumentos, caso sejam necessários para o construtor da classe da qual você está criando a variável.

    Dim bottomLabel As New System.Windows.Forms.Label
    

    Se você declarar mais de uma variável com o mesmo As cláusula, não é possível fornecer um initializer para esse agrupar de variáveis.

Regras de array

  • Variáveis de matriz. Para especificar que uma variável em variablelist é uma matriz, você execute seus variablename imediatamente com parênteses. Se a matriz tiver mais de uma dimensão, você deve incluir as vírgulas entre os parênteses para indicar o número de dimensões.

    Dim oneDimension(), twoDimensions(,), threeDimensions(,,) As Byte
    

    Uma matriz pode ter de 1 a 32 dimensões.

    Para obter mais informações, consulte Matrizes no Visual Basic.

  • Limites de matriz. Você pode especificar a inferior e o limite superior de cada dimensão.Para fazer isso, você incluir um boundslist dentro dos parênteses. Para cada dimensão, a boundslist Especifica o limite superior e, opcionalmente, o limite inferior. O limite inferior é sempre zero, se você especificar ou não.Cada índice pode variar de zero através de seu valor de limite superior.

    As duas instruções a seguintes são equivalentes.Cada demonstrativo declara uma matriz de 21 Integer elementos. Quando você acesso array, o índice pode variar de 0 a 20.

    Dim totals(20) As Integer
    Dim totals(0 To 20) As Integer
    

    A demonstrativo seguinte declara uma matriz bidimensional de tipo Double. O array tem 4 linhas (3 + 1) de 6 colunas (5 + 1) cada.

    Dim matrix2(3, 5) As Double
    

    Observe que um limite superior representa o maior valor possível para esse índice, não o comprimento da dimensão, que é o limite superior mais um.

  • Array Bounds em branco. Você pode deixar todos os limites em branco em uma declaração de matriz.Se fizer isso, a matriz tem o número de dimensões especificadas, mas não foi inicializado.Portanto, ele possui um valor de Nothing até que você inicializar pelo menos alguns de seus elementos. The Dim demonstrativo deve especificar limites para todas as dimensões ou para nenhum deles.

    Dim messages() As String
    
  • Matrizes vazias. É possível usar -1 para declarar o limite superior de uma dimensão de matriz.Isso significa que o array está vazio, mas não Nothing, uma distinção necessária para determinadas funções de tempo de execução linguagem comum. No entanto, o código do Visual Basic não é capaz de acessar tal uma matriz.Se você tentar fazer isso, um IndexOutOfRangeException ocorrerá um erro durante a execução. Para obter mais informações, consulte Como: Criar uma matriz com sem elementos.

  • Inicialização de array. Você pode inicializar os valores de uma matriz, envolvendo os valores de inicialização com chaves de abertura ({}).

    Dim longArray() As Long = {0, 1, 2, 3}
    

    Para os conjuntos multidimensionais, a inicialização para cada dimensão separada é entre chaves na dimensão externa.Os elementos são especificados em ordem linha principal.

    Dim twoDimensions(,) As Integer = {{0, 1, 2}, {10, 11, 12}}
    

Comportamento

  • Valores padrão. Se você não especificar initializer para uma variável, o Visual Basic o inicializa o valor padrão para seu tipo de dados. A tabela a seguir mostra o padrão de valores de inicialização.

    Tipo de dados

    Valor padrão

    Todos os tipos numéricos (incluindo Byte e SByte)

    0

    Char

    Binário 0

    Todos os tipos de referência (incluindo Object, Stringe todos os arrays)

    Nothing

    Boolean

    False

    Date

    0: 00 De 1 º de janeiro do ano 1 (01/01/0001 12: 00: 00 AM)

    Cada elemento de uma estrutura é inicializado sistema autônomo se fosse uma variável separada.Se você declara o comprimento de uma matriz, mas não inicializar a seus elementos, cada elemento é inicializado sistema autônomo se fosse uma variável separada.

  • Nível de Acesso Classe e o módulo padrão variáveis (fora de qualquer procedimento), membro para acesso privado e estrutura padrão de variáveis de membro acesso público.Você pode ajustar os níveis de acesso com os modificadores de acesso.Não é possível usar modificadores de acesso em variáveis locais (dentro de um procedimento).

  • Escopo. Variáveis locais estão no escopo somente dentro de seu procedimento ou bloco.Variáveis de membro estão no escopo em toda a sua classe, estrutura ou módulo.

  • Qualificação Código fora de uma classe, estrutura ou módulo deverá qualificar nome de uma variável de membro com o nome dessa classe, estrutura ou módulo.Fora de que um procedimento ou bloco não pode se referir a quaisquer variáveis locais dentro desse procedimento ou bloco de código.

  • Tempo de vida. A Static variável local tem uma tempo de vida mais longa do que o procedimento no qual é declarada. Os limites de tempo de vida da variável dependem em que o procedimento é declarado e seja Shared.

    Declaração de procedimento

    Variável inicializada

    Variável deixa de existir

    Em um módulo

    A primeira time o procedimento é chamado

    Quando o programa pára de execução

    Em uma classe ou estrutura, Shared

    A primeira time o procedimento é chamado em uma instância específica ou em classe ou estrutura em si

    Quando o programa pára de execução

    Em uma classe ou estrutura, não Shared

    Na primeira vez em que o procedimento for chamado em uma instância específica

    Quando a instância é liberada para a coleta de lixo (GC)

Solução de problemas

  • Ordem de execução. The Dim demonstrativo não próprio é uma demonstrativo executável. No entanto, se ele inicializa uma ou mais variáveis, sistema autônomo inicializações são tratadas sistema autônomo instruções de atribuição.Isso significa que o valor da variável é submetido as seguintes etapas:

    1. Na entrada do primeira para o elemento de código declarando a variável, o Visual Basic o inicializa com o valor padrão para seu tipo de dados.

    2. Quando a execução chega ao Dim demonstrativo, Visual Basic inicializa ao valor fornecido com o Dim demonstrativo.

    3. Sempre que a execução retorna ao Dim demonstrativo, Visual Basic define-lo novamente para o valor fornecido com o Dim demonstrativo.

    Isso tem as seguintes implicações quando você usa um Dim demonstrativo para inicializar uma variável:

    • Se você usar a variável antes de executar o Dim demonstrativo, seu valor é o padrão para seu tipo de dados, não o valor fornecido no Dim demonstrativo.

    • Se a execução nunca atinge o Dim demonstrativo, a variável nunca é inicializada para o valor fornecido com o Dim demonstrativo.

    • Se você altera o valor, mas, em seguida, retorne ao Dim demonstrativo, seu valor alterado é substituída pelo valor fornecido com o Dim demonstrativo.

    Se você colocar todos sistema autônomo seus Dim instruções no início da região de código em que aparecem, por exemplo um módulo ou um procedimento, seu código inicializa-sistema autônomo sistema autônomo você deseja.

Exemplo

O exemplo a seguir declara as variáveis usando o Dim demonstrativo com várias opções.

' The following statement declares and initializes a Long variable.
Dim startingAmount As Long = 500
' The following statement declares a variable that refers to a Button 
' object, creates a new Button object, and assigns it to the variable.
Dim switchButton As New System.Windows.Forms.Button
' The following statement declares a variable that can only be 
' accessed by code in the same class, structure, or module.
Private homeTelephone As String = ""
' The following statement declares a local variable that always retains
' its value, even after its procedure returns to the calling code.
Static totalSales As Double
' The following statement declares a variable that refers to an array.
Dim highTemperature(31) As Integer
' The following statement declares and initializes an array variable 
' that holds 4 Boolean check values.
Dim checkValues() As Boolean = {False, False, True, False}

Consulte também

Tarefas

Como: Declare uma variável de matriz

Como: Declare uma variável de matriz

Como: Declare uma instância de um tipo anônimo

Como: Declare um objeto por meio de um inicializador de objeto

Conceitos

Declaração de variável no Visual Basic

Inicializadores de objeto: Tipos nomeados e anônimo

Tipos anônimos

Inicializadores de objeto: Tipos nomeados e anônimo

Inferência de tipos local

Referência

Declaração Const (Visual Basic)

ReDim demonstrativo (Visual Basic)

Opção Explicit demonstrativo (Visual Basic)