질문 배경
컬렉션 List(Of T)는 VB.NET에서 오래된 컬렉션을 대체하기 위해 도입되었으며, 타입 안전성, 동적 크기 조정 및 인덱스를 통한 빠른 접근을 제공합니다. 리스트를 사용하면 데이터를 구조화하고, 타입화된 요소로 작업하며, 비타입 안전 컬렉션과 관련된 일반적인 오류를 피할 수 있습니다.
문제
초보자들은 리스트의 요소에 올바르게 접근하는 방법, 요소를 추가, 변경 및 삭제하는 방법을 이해하지 못하며, 인덱스를 잘못 사용할 경우(예: 리스트 범위를 초과하는 경우) 무엇이 발생하는지를 잘 모릅니다. 이는 프로그램 실행 중 예외를 초래할 수 있습니다.
해결
List(Of T)에서는 요소가 0부터 인덱싱됩니다. 읽기와 쓰기 모두 인덱스를 통해 요소에 접근할 수 있습니다. 만약 인덱스가 유효하지 않으면 ArgumentOutOfRangeException 예외가 발생합니다. 컬렉션의 메소드를 사용하면 요소와 안전하게 작업할 수 있습니다:
코드 예:
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' 인덱스 0의 요소를 가져옵니다. numbers(1) = 99 ' 인덱스 1의 요소를 설정합니다. ' 삭제 numbers.RemoveAt(0) ' 인덱스를 통해 삭제합니다.
주요 특징:
인덱스가 List(Of T)의 요소 수와 같을 경우 마지막 요소를 얻을 수 있을까요?
아니요. 인덱스는 0부터 시작하며 최대 유효 인덱스는 (Count - 1)입니다. Count와 같은 인덱스를 사용하면 ArgumentOutOfRangeException 오류가 발생합니다.
기존 데이터를 삭제하지 않고 List(Of T)의 중간에 요소를 추가할 수 있나요?
네, Insert 메소드를 사용하여 가능:
numbers.Insert(1, 42) ' 두 번째 위치에 42를 삽입하고 나머지를 오른쪽으로 이동합니다.
For Each를 사용해 반복하는 동안 List(Of T) 컬렉션을 변경하는 것이 위험한가요?
위험합니다. 이는 InvalidOperationException을 초래할 수 있습니다. 이러한 작업을 위해서는 인덱스를 사용한 For 또는 먼저 삭제를 위한 리스트를 구성하세요.
프로그램이 For Each를 사용하여 List(Of T)를 반복하면서 반복 도중에 요소를 삭제합니다.
장점:
단점:
InvalidOperationException으로 중단되며, 데이터가 처리되지 않습니다.코드는 For를 통해 끝에서 시작하여 요소를 반복하고 적합한 객체를 삭제합니다.
장점:
단점: