Partilhar via


Resolução de Problemas de Matrizes (Visual Basic)

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

Erros de Compilação ao Declarar e Inicializar uma Matriz

Os erros de compilação podem resultar de um mal-entendido das regras para declarar, criar e inicializar matrizes. As causas mais comuns dos erros são as seguintes:

  • Fornecer uma cláusula Novo Operador depois de especificar os comprimentos de dimensão na declaração da variável de matriz. As linhas de código seguintes mostram declarações inválidas deste tipo.

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

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

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

  • Especificar comprimentos de dimensão para mais do que a matriz de nível superior de uma matriz irregular. A seguinte linha de código mostra uma declaração inválida deste tipo.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • Omitir a New palavra-chave ao especificar os valores dos elementos. A seguinte linha de código mostra uma declaração inválida deste tipo.

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

  • Fornecer uma New cláusula sem chavetas ({}). As linhas de código seguintes mostram declarações inválidas deste 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)

Aceder a uma Matriz Fora dos Limites

O processo de inicialização de uma matriz atribui um limite superior e um limite inferior a cada dimensão. Cada acesso a um elemento da matriz tem de especificar um índice válido, ou inferior à linha, para cada dimensão. Se algum índice estiver abaixo do limite inferior ou acima do limite superior, será resultante uma exceção IndexOutOfRangeException . O compilador não consegue detetar este erro, pelo que ocorre um erro no tempo de execução.

Determinar Limites

Se outro componente passar uma matriz para o seu código, por exemplo, como um argumento de procedimento, não sabe o tamanho dessa matriz ou os comprimentos das respetivas dimensões. Deve determinar sempre o limite superior para cada dimensão de uma matriz antes de tentar aceder a quaisquer elementos. Se a matriz tiver sido criada por outros meios que não uma cláusula do Visual Basic New , o limite inferior pode ser diferente de 0 e é mais seguro determinar esse limite inferior também.

Especificar a Dimensão

Ao determinar os limites de uma matriz multidimensional, tenha em atenção a forma como especifica a dimensão. Os dimension parâmetros dos GetLowerBound métodos e GetUpperBound são baseados em 0, enquanto os Rank parâmetros do Visual Basic LBound e UBound das funções são baseados em 1.

Ver também