Compartilhar via


Solucionando problemas de matrizes (Visual Basic)

Esta página lista alguns problemas comuns que podem ocorrer ao trabalhar com matrizes.

Erros de compilação declarar e inicializar uma matriz

Erros de compilação podem surgir de mal-entendido das regras para declarar, criando e inicializando arrays. As causas mais comuns de erros são as seguintes:

  • Fornecendo um operador New (Visual Basic) cláusula depois de especificar os comprimentos de dimensão nadeclaraçãode variávelde matriz. As linhas de código a seguir mostram declarações inválido desse tipo.

    Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()

    Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)

    Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()

  • A especificação de comprimentos de dimensão para a mais do que a matriz de nível superior-de uma matriz denteada. A seguinte linha de código mostra umadeclaração inválidodesse tipo.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Omitindo o New palavra-chave ao especificar os valores de elemento. A seguinte linha de código mostra umadeclaração inválidodesse tipo.

    Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}

  • Fornecendo um New cláusula sem chaves ({}). As linhas de código a seguir mostram declarações inválido desse tipo.

    Dim INVALIDsingleDimByteArray() As Byte = New Byte()

    Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)

    Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)

Acessando uma matriz fora dos limites

O processo de inicializar uma matriz atribui um superior limite e um inferior limite para cada dimensão. Cada acesso a um elemento da matriz deve especificar umíndicede válidoou subscrito, para cada dimensão. Se qualquer índice estiver abaixo de seu menor limite ou acima seu superior limite, um IndexOutOfRangeExceptionresultados deexceção . O compilador não pode detectar um erro, portanto, um erro ocorre em tempo de execução.

Determinação de limites

Se o outro componente passa uma matriz para o seu código, por exemplo como umargumentodo procedimento, você não souber o tamanho da matriz ou comprimentos de suas dimensões. Você sempre deve determinar superior limite para cada dimensão de uma matriz antes de você tentar acessar quaisquer elementos. Se a matriz tiver sido criada por algum meio diferente de um Visual Basic New cláusula, menor limite pode ser algo diferente de 0, e é mais seguro determinar que inferior limite como bem.

Especificando a dimensão

Ao determinar os limites de uma matriz multidimensional, tome cuidado como especificar a dimensão. O dimension parâmetros da GetLowerBound e GetUpperBound métodos são 0-com base, enquanto o Rank parâmetros da Visual Basic LBound e UBound funções são baseados em 1-.

Consulte também

Tarefas

Como: Inicializar variáveis de matriz no Visual Basic

Conceitos

Matrizes no Visual Basic