배열 문제 해결(Visual Basic)

이 페이지에는 배열로 작업할 때 발생할 수 있는 몇 가지 일반적인 문제가 나열됩니다.

배열 선언 및 초기화 컴파일 오류

컴파일 오류는 배열 선언, 만들기 및 초기화에 대한 규칙의 오해로 인해 발생할 수 있습니다. 오류의 가장 일반적인 원인은 다음과 같습니다.

  • 배열 변수 선언에서 차원 길이를 지정한 후 새 연산자 절을 제공합니다. 다음 코드 줄은 이 형식의 잘못된 선언을 보여 줍니다.

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

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

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

  • 들쭉날쭉한 배열의 최상위 배열보다 많은 차원 길이를 지정합니다. 다음 코드 줄에는 이 형식의 잘못된 선언이 표시됩니다.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • 요소 값을 지정할 때 키워드(keyword) 생략 New 합니다. 다음 코드 줄에는 이 형식의 잘못된 선언이 표시됩니다.

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

  • New 중괄호 없이 절 제공({}). 다음 코드 줄은 이 형식의 잘못된 선언을 보여 줍니다.

    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)

범위를 벗어난 배열에 액세스

배열을 초기화하는 프로세스는 상한 및 하한을 각 차원에 할당합니다. 배열의 요소에 대한 모든 액세스 권한은 모든 차원에 대해 유효한 인덱스 또는 아래 첨자를 지정해야 합니다. 인덱스가 하한 이하이거나 상한 이상인 경우 예외가 IndexOutOfRangeException 발생합니다. 컴파일러는 이러한 오류를 감지할 수 없으므로 런타임에 오류가 발생합니다.

경계 확인

예를 들어 프로시저 인수와 같이 다른 구성 요소가 코드에 배열을 전달하는 경우 해당 배열의 크기 또는 해당 차원의 길이를 알 수 없습니다. 요소에 액세스하기 전에 항상 배열의 모든 차원에 대한 상한을 결정해야 합니다. Visual Basic New 절 이외의 일부 수단에서 배열을 만든 경우 하한은 0이 아닌 것일 수 있으며 하한도 확인하는 것이 가장 안전합니다.

차원 지정

다차원 배열의 범위를 결정할 때 차원을 지정하는 방법을 주의하세요. 및 메서드의 GetLowerBound 매개 변수는 dimension 0 기반 Rank 이지만 Visual Basic LBoundUBound 함수의 매개 변수는 1 기반입니다.GetUpperBound

참조