ReDim 문(Visual Basic)
배열 변수의 저장 공간을 다시 할당합니다.
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
요소
용어 |
정의 |
---|---|
Preserve |
선택 사항입니다.마지막 차원의 크기만 변경하는 경우 기존 배열의 데이터를 보존하는 데 사용하는 한정자입니다. |
name |
필수 요소.배열 변수의 이름입니다.선언된 요소 이름(Visual Basic)를 참조하십시오. |
boundlist |
필수 요소.다시 정의된 배열의 각 차원에 대한 범위 목록입니다. |
설명
ReDim 문을 사용하여 이미 선언된 하나 이상의 배열 차원의 크기를 변경할 수 있습니다.큰 배열이 있는데 이 배열의 일부 요소가 더 이상 필요 없는 경우 ReDim 문으로 배열 크기를 줄여서 메모리를 확보할 수 있습니다.반면 더 많은 요소를 배열 해야 하는 경우, ReDim 를 추가할 수 있습니다.
ReDim 문은 배열에만 사용할 수 있으며스칼라 (단일 값만 포함 하는 변수), 컬렉션 또는 구조체에는 맞지 않습니다.형식으로 변수를 선언 하는 경우 Array, ReDim 문이 형식 정보가 부족 새 배열을 만들 수 없는.
ReDim 키워드는 프로시저 수준에서만 사용할 수 있습니다.따라서 변수의 선언 컨텍스트는 프로시저 이어야 합니다. 소스 파일, 네임 스페이스, 인터페이스, 클래스, 구조체, 모듈, 또는 블록을 수 없습니다.자세한 내용은 선언 컨텍스트 및 기본 액세스 수준(Visual Basic)을 참조하십시오.
규칙
여러 변수. 동일한 선언문에서 여러 배열 변수의 크기를 조정 하 고 지정할 수 있는 name 및 boundlist 부품 각 변수에 대 한.변수가 여러 개 있으면 쉼표로 구분됩니다.
**배열 범위.**boundlist의 각 항목은 해당 차원의 하한 및 상한을 지정할 수 있습니다.항상 하한값입니다 0 (영)입니다.상한과 해당 차원의 길이가 아니라 차원의 상한을 더하기 하나는 최고 사용 가능한 인덱스 값입니다.각 차원의 인덱스는 0부터 해당 상한값 달라질 수 있습니다.
차원 수 boundlist 배열 (차수) 차원의 원본 수와 일치 해야 합니다.
**데이터 형식.**ReDim 문은 배열 변수 또는 요소의 데이터 형식을 변경할 수 없습니다.
**초기화.**ReDim 문은 배열 요소에 대한 새 초기화 값을 제공할 수 없습니다.
**차수.**ReDim 문은 배열의 차수(차원 수)는 변경할 수 없습니다.
Preserve를 사용하여 크기 조정. 사용 하는 경우 Preserve, 배열의 마지막 차원 크기만 조정할 수 있습니다.다른 모든 차원에 대 한 기존 배열의 범위를 지정 해야 합니다.
예를 들어, 배열에 차원이 하나만 있는 경우 마지막 차원이면서 유일한 차원을 변경하는 것이기 때문에 차원의 크기를 변경하더라도 배열의 내용을 유지할 수 있습니다.그러나 배열에 차원이 두 개 이상이고 Preserve를 사용하는 경우에는 마지막 차원의 크기만 변경할 수 있습니다.
속성. 값의 배열을 포함하는 속성에 ReDim을 사용할 수 있습니다.
동작
**배열 대체.**ReDim은 기존 배열을 해제하고 같은 차수의 새 배열을 만듭니다.배열 변수에서 해제된 배열이 새 배열로 대체됩니다.
Preserve를 사용하지 않고 초기화. 지정 하지 않은 경우 Preserve, ReDim 해당 데이터 형식에 대해 기본값을 사용 하 여 새 배열의 요소를 초기화 합니다.
Preserve를 사용하여 초기화. 지정 하는 경우 Preserve, Visual Basic 기존 배열의 새 배열에 요소를 복사 합니다.
예제
다음 예제에서는 동적 배열의 마지막 차원의 크기를 늘린 다음(배열의 기존 데이터 유지) 다시 크기를 줄입니다(부분적인 데이터 손실).마지막으로 크기를 원래 값으로 다시 줄인 다음 모든 배열 요소를 다시 초기화합니다.
Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)
Dim 문에 3 차원으로 새 배열을 만듭니다.각 차원은 10, 경계와 선언 되므로 각 차원에 대 한 배열 인덱스 0에서 10 까지입니다.다음 설명에서 3 차원으로 레이어, 행 및 열으로 라고 합니다.
첫째 ReDim은 변수 intArray의 기존 배열을 대신하는 새 배열을 만듭니다.ReDim은 기존 배열의 모든 요소를 새 배열로 복사합니다.또한 모든 계층에서 각 행의 끝에 10 개의 열을 추가 하 고 이러한 새 열 0에 요소를 초기화 (기본값 Integer, 배열 요소 형식인).
두 번째 ReDim 다른 새 배열을 만들고 적절 한 요소를 모두 복사 합니다.그러나 모든 계층에 있는 전체 행의 끝에서 5개의 열이 손실됩니다.이 열을 더 이상 사용하지 않는 경우에는 해당 열이 손실되어도 문제가 되지 않습니다.큰 배열의 크기를 줄이면 필요 없는 메모리를 확보할 수 있습니다.
세 번째 ReDim 다른 새 배열을 만들고 모든 계층에서 각 행 끝에서 5 개의 열을 제거 합니다.이때 기존 요소는 복사되지 않으며이 문은 배열의 원래 크기로 되돌립니다.문이 없기 때문에 Preserve 한정자를 설정 모든 배열 요소 원래 기본값으로 합니다.
다른 예제를 보려면 Visual Basic의 배열를 참조하십시오.