배열 문제 해결(Visual Basic)Troubleshooting Arrays (Visual Basic)

이 페이지에서는 배열로 작업할 때 발생할 수 있는 몇 가지 일반적인 문제를 나열 합니다.This page lists some common problems that can occur when working with arrays.

컴파일 오류 배열 선언 및 초기화Compilation Errors Declaring and Initializing an Array

배열의 선언, 생성 및 초기화에 대 한 규칙 있다면 오해에서 컴파일 오류가 발생할 수 있습니다.Compilation errors can arise from misunderstanding of the rules for declaring, creating, and initializing arrays. 오류의 가장 일반적인 원인은 다음과 같습니다.The most common causes of errors are the following:

  • 배열 변수 선언에서 차원 길이를 지정한 후 새 Operator 절을 제공 합니다.Supplying a New Operator clause after specifying dimension lengths in the array variable declaration. 다음 코드 줄에서는이 형식의 잘못 된 선언을 보여 줍니다.The following code lines show invalid declarations of this type.

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

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

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

  • 가변 배열의 최상위 배열 보다 많은 차원 길이를 지정 하는 경우Specifying dimension lengths for more than the top-level array of a jagged array. 다음 코드 줄에서는이 형식의 잘못 된 선언을 보여 줍니다.The following code line shows an invalid declaration of this type.

    Dim INVALIDjaggedByteArray(1)(1) As Byte

  • 요소 값을 지정할 때 New 키워드를 생략 합니다.Omitting the New keyword when specifying the element values. 다음 코드 줄에서는이 형식의 잘못 된 선언을 보여 줍니다.The following code line shows an invalid declaration of this type.

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

  • 중괄호 없이 New 절 제공 ({})Supplying a New clause without braces ({}). 다음 코드 줄에서는이 형식의 잘못 된 선언을 보여 줍니다.The following code lines show invalid declarations of this type.

    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)

범위를 벗어난 배열 액세스Accessing an Array Out of Bounds

배열을 초기화 하는 프로세스는 상한을 할당 하 고 각 차원에는 하한값을 할당 합니다.The process of initializing an array assigns an upper bound and a lower bound to each dimension. 배열의 요소에 대 한 모든 액세스는 모든 차원에 대해 유효한 인덱스 또는 첨자를 지정 해야 합니다.Every access to an element of the array must specify a valid index, or subscript, for every dimension. 인덱스의 하 한이 낮거나 상한 보다 작으면 IndexOutOfRangeException 예외가 발생 합니다.If any index is below its lower bound or above its upper bound, an IndexOutOfRangeException exception results. 컴파일러는 이러한 오류를 검색할 수 없으므로 런타임에 오류가 발생 합니다.The compiler cannot detect such an error, so an error occurs at run time.

범위 결정Determining Bounds

다른 구성 요소에서 코드에 배열을 전달 하는 경우 (예: 프로시저 인수) 해당 배열의 크기나 차원의 길이를 알 수 없습니다.If another component passes an array to your code, for example as a procedure argument, you do not know the size of that array or the lengths of its dimensions. 모든 요소에 액세스 하기 전에 항상 배열의 모든 차원에 대 한 상한을 결정 해야 합니다.You should always determine the upper bound for every dimension of an array before you attempt to access any elements. Visual Basic New 절 이외의 방법으로 배열을 만든 경우 하한값은 0이 아닐 수 있으며, 그 하한값을 확인 하는 것이 가장 안전 합니다.If the array has been created by some means other than a Visual Basic New clause, the lower bound might be something other than 0, and it is safest to determine that lower bound as well.

차원 지정Specifying the Dimension

다차원 배열의 범위를 결정할 때는 차원을 지정 하는 방법을 주의 해야 합니다.When determining the bounds of a multidimensional array, take care how you specify the dimension. GetLowerBoundGetUpperBound 메서드의 dimension 매개 변수는 0부터 사용 되지만 Visual Basic LBoundUBound 함수의 Rank 매개 변수는 1부터 사용 됩니다.The dimension parameters of the GetLowerBound and GetUpperBound methods are 0-based, while the Rank parameters of the Visual Basic LBound and UBound functions are 1-based.

참고 항목See also