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