ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컬렉션(Collection) 인터페이스
    Programing/C# 2008. 8. 1. 16:38
    컬렉션(Collection)은 ArrayList, SortedList, Hashtable, Stack, Queue, NameValueCollection 과 같은 유형들이 있다.
    이들은 데이터를 보관하는것 뿐만 아니라. 수정, 삭제, 삽입, 검색 등의 다양한 기능을 제공해 준다.

    배열과 가장 차이가 나는 특징은 메모리의 사이즈를 동적으로 확장할 수 있다는 점이다. 배열은 첨자로 배열을 생성후에 그 첨자의 범위 내에서만 사용할 수 있는 반면에 컬렉션류들은 데이터를 삽입을 하게되면 동적으로 메모리를 늘려주게 된다.
     
    쉽게 컬렉션은 소형 데이터베이스라고 생각하면 된다. (단지 프로그램이 실행되는 동안만~~~)

    컬렉션의 네임스페이는 System.Collections 이다.

    사용자 삽입 이미지

    컬렉션류 인터페이스 상속 구조 (http://www.jabook.org/)

    위는 컬렉션류 인터페이스의 상속구조를 보여주고 있다.
    System.Collections 네임스페이스 내의 모든 컬렉션 클래스들에 저장할 수 있는 데이터의 대상은 Object 형태이며 이는 어떤 타입의 데이터라도 사용할 수 있음을 뜻한다.

    IEnumerable 인터페이스는 내부에 GetEnumerator()추상메서드를 이용하여 Enumerator의 인스턴스를 얻을 수 있다.  Enumerator은 현재커서 위치에서 데이터를 추출하는 기능을 지원하며, 커서를 데이터 집합의 시작점으로 돌리는 기능도 제공한다. (순방향으로 검색기능을 제공) 대표적인 예로 Array는 바로 그것이다.

    IEnumerator 인터페이스는 내부에서 IEnumerator을 사용하는 인터페이스로서 데이터의 검색 기능을 제공해준다. 이 인터페이스를 상속한 클래스는 컬렉션을 열거할 수 있기 때문에 모든 요소에 접근할 수 있다.

    ICollection 인터페이스는 IEnumerable를 상속하기 때문에 기본적으로 나열의 속성을 가지고 있다. 이 인터페이스에서 제공하는 기능은 집합적인 개념과 동기화 지원을 위한 기능들이다.
    컬렉션의 객체 수를 반환하거나 쓰레드 안전성 검사, 컬렉션에 대한 액세스를 동기화하는 등등의 많은 속성과 지정한 배열 위치부터 컬렉션의 요소를 배열로 복사하는 메서드 등을 제공한다.

    IList 인터페이스는 ICollection 인터페이스에서 파생되었다. 따라의 위의 모든 기능을 포함하고 있다. 기본적인 배열 타입이 이 인터페이스를 구현하고 있으며 데이터의 삽입, 삭제, 검색, 인덱스등의 작업을 할 수 있다. 리스트의 길이, 일기전용인지의 여부, 인덱스값으로 데이터를 삽입등등을 할 수 있는 속성과 데이터 추가, 제거, 존재유무, 데이터의 위치값, 특정 위치에 삽입등등의 다양한 편리 메서스들을 가지고 있다.

    IDictionary 인터페이스는 ICollection 인터페이스에서 파생되었다. 이 인터페이스는 순서에만 의존하는 리스트와는 달리 키(Key)와 값(Value)으로 대응시켜 데이터를 추출하는 방법을 제공한다. IList 인터페이스와 비슷한 속성과 메서드를 가지지만, 키와 값으로 데이터를 검색할 수 있다는 점을 명심해두자.

    마지막으로 IDictionaryEnumerator 인터페이스는 Dictionary + Enumerator의 기능이 합쳐 놓았다고 생각하면 편하다. 이는 사전적인 요소를 열거할 수 있는 방법을 제공해 준다.


Designed by Tistory.