다음을 통해 공유


업그레이드 권장 사항: 영(0)에서 시작하는 배열 사용

업데이트: 2007년 11월

Visual Basic 6.0에서는 정수의 상한값과 하한값을 사용하여 배열을 정의할 수 있습니다. 또한 ReDim을 사용하여 variant를 배열로 다시 할당할 수 있습니다. 다른 언어와의 상호 운용을 위해 Visual Basic 2008의 배열은 하한값으로 영(0)을 가져야 하며 Dim 키워드를 사용하여 배열 변수를 미리 선언하지 않을 경우 ReDim을 사용할 수 없습니다. 이렇게 하면 배열의 정의 방법이 제한되지만 Visual Basic 2008와 다른 .NET Framework 언어 간에 배열을 전달할 수 있습니다. 다음 예제에서는 이러한 제한을 보여 줍니다.

'BAD: LBound must be 0
Dim a(1 To 10) As Integer
'BAD: Can't use ReDim without Dim
ReDim v(10)
'OK: Creates an array of 11 integers
Dim b(10) As Integer
'OK: Can ReDim previously Dimed variable
ReDim b(5) As Integer

그러나 Option Base 문이 언어에서 제거되는 의도하지 않은 결과도 발생합니다.

프로젝트를 Visual Basic 2008로 업그레이드하면 모든 Option Base 문이 코드에서 제거됩니다. 배열이 영(0)에서 시작할 경우 Option Base 문은 변경되지 않습니다. 그러나 배열이 영(0)에서 시작되지 않으면 다음 예제와 같이 하한값이 제거되고 코드에 경고가 삽입됩니다.

Dim a(1 To 10) As Integer

이 코드는 다음과 같이 변경됩니다.

' UPGRADE_WARNING: Lower bound of an array was changed from 1 to 0.
Dim a(10) As Integer

대부분의 경우 업그레이드된 코드는 이전처럼 실행되지만 응용 프로그램이 논리에서 하한값 1에 의존하는 경우 약간의 수정이 필요합니다. 변경 내용을 검토하는 데 도움이 되도록 Dim, ReDim 및 LBound 문에 경고가 표시됩니다.

이런 이유로 Visual Basic 6.0 코드에서는 영(0)에서 시작하는 배열을 사용해야 하며 ReDim을 배열 선언으로 사용하거나 Option Base 1을 사용하면 안 됩니다.

참고 항목

기타 리소스

업그레이드를 위한 언어 권장 사항