프로그래밍주니어 VB.NET 프로그래머

Visual Basic에서 배열의 올바른 구성 및 초기화는 무엇이며 동적 배열 작업 시 주의해야 할 사항은 무엇이며 이를 사용할 때 오류를 피하는 방법은 무엇입니까?

Hintsage AI 어시스턴트로 면접 통과

답변.

Visual Basic에서 배열은 고정 길이 또는 가변 길이의 구조로 동일한 유형의 요소를 저장합니다. 동적 배열은 초기화 및 크기 변경 시 특히 주의가 필요합니다.

질문의 역사

VB6에서는 고정 또는 가변 크기의 정적 및 동적 배열만 있었습니다. VB.NET에서는 유형 안전성과 함께 모든 유형의 1차원, 다차원 및 단계적 배열을 완벽하게 구현했습니다.

문제

빈번한 오류는 다음과 같습니다 —

  • 초기화되지 않은 배열 접근
  • 배열 범위를 초과
  • Preserve 없이 동적 배열 크기를 변경할 때 원본 데이터 손실

해결책

사용하기 전에 항상 배열을 초기화하고 조심스럽게 크기를 변경하십시오:

' 선언 Dim arr() As Integer ' 초기화 ReDim arr(4) ' 인덱스 0–4 arr(0) = 1 ' 값 보존을 통한 크기 변경 ReDim Preserve arr(6)

주요 특징:

  • 동적 배열의 크기 변경을 위한 ReDim 사용
  • Preserve 키워드는 크기 변경 시 이전 값을 보존합니다
  • 대규모 또는 자주 변경되는 컬렉션의 경우 List(Of T) 사용이 더 바람직합니다.

트릭 질문.

배열을 선언했지만 초기화를 수행하지 않으면 어떻게 됩니까?

1차원 배열의 경우 Dim arr() As Integer 변수는 존재하지만 배열 자체는 할당되지 않아 arr.Length에 접근하면 예외가 발생합니다.

ReDim Preserve를 사용하여 다차원 배열의 두 축 모두의 크기를 변경할 수 있습니까?

아니요, ReDim Preserve는 마지막 차원만 크기를 변경할 수 있도록 허용되며, 그렇지 않으면 런타임 오류가 발생합니다.

ReDim Preserve를 통해 크기를 증가시키면 배열 요소에 어떤 일이 발생합니까?

이전 값은 보존되고 새로운 요소는 기본값(예: Integer의 경우 0, 참조 유형의 경우 Nothing)을 받습니다.

일반적인 오류 및 안티 패턴

  • 작업 전에 초기화되지 않은 배열
  • 루프 중 배열 범위 초과
  • 루프에서 ReDim Preserve 사용 빈번(성능 손실)

실제 사례

**부정적인 사례

배열이 선언되었지만 초기화되지 않았습니다(Dim arr() As Integer), 그리고 arr.Length에 접근하면 NullReferenceException을 받습니다.

장점:

  • 초기화 전 메모리 절약

단점:

  • 오류가 발생하는 시점을 추적하기 어려움

**긍정적인 사례

배열은 항상 ReDim을 통해 명시적으로 초기화되며, 크기 변경은 기본 루프 외부에서만 수행되며, 자주 변경되는 목록에는 List(Of Integer)를 사용합니다.

장점:

  • 접근 오류가 발생하지 않음
  • 최적의 성능

단점:

  • 배열 크기를 제어하고 필요 시 List(Of T)로 전환하기 위해 약간 더 많은 코드가 필요합니다.