프로그래밍VB.NET 개발자

Visual Basic에서 배열과 컬렉션은 어떻게 구현됩니까? 표준 배열, Collection, ArrayList 및 List(Of T)의 기능과 사용을 비교하십시오.

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

답변.

Visual Basic에는 데이터 집합을 구성하는 여러 방법이 있습니다:

  • 표준 배열 (Dim arr(10) As Integer): 정적 크기, 인덱스에 대한 빠른 접근, 동적으로 확장할 수 없음.

  • Collection (객체 컬렉션): 동적으로 확장 가능, 모든 유형의 요소를 저장할 수 있음(그러나 엄격한 유형 지정 없음), 키와 인덱스를 통한 접근 지원, For Each 지원.

  • ArrayList (VB.NET에서): 구식 컬렉션, Object 유형의 객체를 저장, 제네릭을 지원하지 않음, 유형 변환(casting) 필요.

  • List(Of T) (VB.NET에서): 유형 지정된 컬렉션, 동적 크기, 빠른 접근, LINQ 지원, 유형 안전함.

사용 예:

표준 배열:

Dim numbers(4) As Integer numbers(0) = 10

Collection:

Dim coll As New Collection() coll.Add("apple") coll.Add(123) For Each item In coll Debug.Print(item) Next

ArrayList:

Dim arrList As New ArrayList() arrList.Add("abc") arrList.Add(123)

List(Of T):

Dim list As New List(Of Integer)() list.Add(10) list.Add(20) For Each num As Integer In list Console.WriteLine(num) Next

함정 질문.

ArrayList를 사용할 때 List(Of T)와 비교하여 발생할 수 있는 주요 문제는 무엇입니까?

답변: ArrayList는 요소를 Object로 저장하므로 요소에 접근할 때 명시적 유형 변환(casting)이 필요하여, 실행 중에 InvalidCastException을 받을 가능성이 높아집니다. List(Of T)는 컴파일 단계에서 엄격한 유형 지정을 보장하여 이러한 오류를 방지합니다.

Dim arrList As New ArrayList() arrList.Add(100) ' Dim s As String = arrList(0) ' 실행 시간 오류 Dim n As Integer = CType(arrList(0), Integer) ' OK

주제에 대한 미세한 지식 결여로 인한 실제 오류 예시.


이야기

금융 시스템에서는 동적 크기 데이터를 저장하기 위해 표준 배열을 적극적으로 사용했습니다. 미리 할당된 크기를 초과하면 배열이 "잘려" 트랜잭션이 손실되는 일이 발생했습니다.


이야기

ArrayList를 사용하면서 문자열과 숫자를 컬렉션에 추가한 후 요소의 합계를 계산하려고 할 때, 문자열을 숫자와 더할 수 없기 때문에 예외가 발생하여 애플리케이션이 중단되었습니다.


이야기

Collection을 주문 클래스 저장에 사용했지만 요소의 유형을 확인하지 않았습니다. 하나의 모듈에서 실수로 텍스트를 주문 객체 대신 추가하여 비즈니스 로직 전체가 중단되는 결과를 초래했습니다.