ICollection<T>, ICollection
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 인터페이스
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 |