다음을 통해 공유


Visual Basic의 컬렉션

업데이트: 2007년 11월

일반적으로 컬렉션은 관련된 개체를 그룹화하고 관리하는 데 사용되는 개체입니다. 예를 들어, 모든 Form에는 컨트롤 컬렉션이 있습니다. 폼의 Controls 속성을 통해 이 컬렉션에 액세스할 수 있습니다. 이 컬렉션은 해당 폼의 모든 컨트롤을 나타내는 개체입니다. 이 컬렉션을 사용하면 해당 인덱스로 컬렉션의 컨트롤을 검색하고 For Each...Next 문(Visual Basic)을 사용하여 컬렉션의 요소 전체를 반복할 수 있습니다.

그러나 여러 종류의 컬렉션이 있으며 이런 컬렉션은 몇 가지 점에서 서로 다릅니다.

컬렉션의 종류

Visual Basic에서는 사용자 컬렉션을 정의하고 만드는 데 사용할 수 있는 Collection 클래스를 제공합니다. 폼의 Controls 컬렉션처럼 Collection 클래스도 For Each...Next를 사용하여 요소 전체를 반복하고 인덱스로 요소를 검색할 수 있는 기능을 기본적으로 제공합니다. 자세한 내용은 Collection 개체(Visual Basic)를 참조하십시오.

그러나 두 종류의 컬렉션이 서로 호환되지는 않습니다. 예를 들어, 다음 코드는 컴파일러 오류를 발생시킵니다.

Dim localControls As Collection

' The following line generates a COMPILER ERROR.

localControls = Me.Controls()

Controls 컬렉션은 .NET Framework 컬렉션인 반면에 localControls 변수는 Visual BasicCollection이기 때문에 컬렉션이 호환되지 않습니다. 두 컬렉션은 서로 다른 클래스에서 구현됩니다. 두 컬렉션의 메서드가 비슷하지만 같지 않고 해당 인덱싱 체계가 다릅니다.

0부터 시작하는 컬렉션과 1부터 시작하는 컬렉션

컬렉션은 시작 인덱스에 따라 0부터 시작하거나 1부터 시작할 수 있습니다. 전자의 경우 컬렉션에 있는 첫 번째 항목의 인덱스가 0이고 후자의 경우 1입니다. 이 페이지의 앞부분에서 설명한 .NET FrameworkControls 컬렉션이 0부터 시작하는 컬렉션의 예입니다. Visual BasicCollection 개체는 1부터 시작하는 컬렉션의 예입니다.

1부터 시작하는 컬렉션은 인덱스 범위가 1부터 Count 속성(Collection 개체) 값까지이고 컬렉션에 있는 항목의 수를 반환하기 때문에 Visual Basic 사용자가 보다 쉽게 사용할 수 있습니다. 이와는 반대로 0부터 시작하는 컬렉션의 인덱스는 범위가 0부터 Count 속성 값보다 하나 적은 값까지가 됩니다. 이 컬렉션은 인덱스 값이 기준 값의 오프셋이거나 0부터 시작하는 열거형의 멤버에 해당하는 경우에 적합합니다.

.NET Framework 컬렉션은 표준화를 위해 0부터 시작되는 방식을 따릅니다. Visual BasicCollection 클래스는 이전 버전과의 호환성을 위해 1부터 시작되는 방식을 따릅니다.

인덱스 값 및 키 값

Visual BasicCollection 클래스 인스턴스에서는 숫자 인덱스나 String 키를 사용하여 항목에 액세스할 수 있습니다. 키 지정 여부에 관계없이 항목을 Visual BasicCollection 개체에 추가할 수 있습니다. 키를 지정하지 않고 항목을 추가할 경우 숫자 인덱스를 사용하여 항목에 액세스해야 합니다.

반대로, System.Collections.ArrayList와 같은 컬렉션에서는 숫자 인덱스만 사용할 수 있습니다. 예를 들어, 키를 포함하는 String 배열을 기반으로 사용자 매핑을 구성하지 않을 경우 이러한 컬렉션 요소에 키를 연결할 수 없습니다.

항목 추가 및 제거

컬렉션은 컬렉션에 항목을 추가할 수 있는지 여부와 추가할 수 있는 경우 항목을 추가하는 방식에서 차이가 납니다. Visual BasicCollection 개체는 일반적인 용도의 프로그래밍 도구이므로 다른 컬렉션보다 더 융통성이 있습니다. 이 개체에는 컬렉션에 항목을 추가하기 위한 Add 메서드(Collection 개체)와 항목을 제거하기 위한 Remove 메서드(Collection 개체)가 포함되어 있습니다.

한편, 특수 컬렉션을 사용하여 코드로 요소를 추가하거나 제거할 수 없습니다. 예를 들어, CheckedListBox.CheckedItems 속성은 인덱스로 항목에 대한 참조 컬렉션을 반환하지만 코드로 해당 컬렉션에서 항목을 추가하거나 제거할 수 없습니다. 이 작업은 사용자가 사용자 인터페이스에서 해당 확인란을 선택하거나 선택 취소하는 방법으로만 수행할 수 있습니다. 따라서 이 컬렉션에 대한 Add 또는 Remove 메서드는 없습니다.

참고 항목

작업

방법: 개체 컬렉션 만들기

방법: 개체 배열 만들기

방법: 컬렉션의 항목 추가, 삭제 및 검색

방법: 클래스에서 컬렉션 정의

방법: Visual Basic에서 컬렉션 반복

컬렉션 문제 해결

개념

개체 그룹 관리

Visual Basic 컬렉션 클래스

컬렉션을 사용하여 개체 관리