본문 바로가기
C#

[C#] ICollection<T>, ICollection

by DANEW 2023. 8. 31.

ICollection<T>, ICollection

 

IEnumerable<T> 인터페이스 (System.Collections.Generic)

지정된 형식의 컬렉션을 단순하게 반복할 수 있도록 지원하는 열거자를 노출합니다.

learn.microsoft.com

public interface ICollection<T> : IEnumerable<T>, IEnumerable
{
    // 컬렉션의 크기를 파악
    int Count { get; }
 
    // 읽기 전용 어부를 판단
    bool IsReadOnly { get; }
 
 
    // 컬렉션에 항목을 추가
    void Add(T item);
 
    // 컬렉션을 비움
    void Clear();
 
    // 주어진 항목(요소)이 컬렉션에 존재하는지 판단
    bool Contains(T item);
   
    // 컬렉션을 배열로 복사하는 기능 - ToArray
    void CopyTo(T[] array, int arrayIndex);
 
    // 컬렉션에 항목을 제거
    bool Remove(T item);
}

- 가산(countable) 컬렉션(저장된 요소들의 개수를 셀 수 있는 컬렉션)을 위한 표준 인터페이스

- IEnumerable<T>를 확장하므로 foreach 문을 이용해서 요소들을 훑는 기능도 제공

반응형

ICollection 인터페이스

 

ICollection 인터페이스 (System.Collections)

제네릭이 아닌 모든 컬렉션에 대한 크기, 열거자 및 동기화 메서드를 정의합니다.

learn.microsoft.com

public interface ICollection : IEnumerable
{
    int Count { get; }
    object SyncRoot { get; }
    bool IsSynchronized { get; }
 
    void CopyTo(Array array, int index);
}

- 비제네릭 ICollection도 가산 컬렉션 기능을 지원하지만, 추가 기능은 지원하지 않음

- 동기화 관련 속성이 정의되어 있음. 스레드 안정성이 컬렉션 자체가 제공해야 할 것이 아니기에 제네릭에는 없음

 

인터페이스 구현

- 읽기 전용 ICollection<T>를 구현할 때에는 Add, Remove, Clear 메서드가 반드시 NotSupportedException을 던져야 함

- 보통의 경우 이 인터페이스들은 IList나 IDictionary와 함께 구현 

반응형

'C#' 카테고리의 다른 글

[C#] BitArray  (0) 2023.09.14
[C#] Queue<T>, Queue, Stack<T>, Stack  (0) 2023.09.12
[C#] LinkedList<T>, LinkedListNode<T>  (0) 2023.09.10
[C#] IList<T>, IList  (0) 2023.09.08
[C#] AppContext  (1) 2023.08.30
[C#] Process  (1) 2023.08.29
[C#] Environment  (0) 2023.08.28
[C#] Console  (1) 2023.08.27