8.2 컬렉션
8.2.2 ICollection 인터페이스
ICollection 인터페이스는 제네릭이 아닌 모든 컬렉션의 기반 인터페이스입니다. 제네릭 컬렉션은 IColleciont<> 인터페이스를 기반으로 정의되어 있는데 여기서는 ICollection 인터페이스에 대해 살펴볼게요.
ICollection은 C#에서 제공하는 제네릭이 아닌 모든 컬렉션의 기반 인터페이스로 컬렉션에 보관된 요소의 개수와 다른 컬렉션에 보관된 요소를 복사하는 메서드, 열거자, 동기화 메서드가 약속되어 있습니다. 물론, 열거자는 ICollection이 IEnumerable을 기반으로 정의되어 있기 때문입니다.
▶ ICollection 인터페이스의 약속된 멤버
//System. Collections에 정의되어 있음 public interface ICollection : IEnumerable { void CopyTo(Array array, int index); //보관된 요소들을 array에 복사 int Count //보관된 요소 개수 가져오기 { get; } bool IsSynchronized //동기화 가능 여부 { get; } object SyncRoot //동기화 대상 개체 가져오기 { get; } } |
ICollection의 Count속성은 보관된 요소 개수를 가져올 때 사용합니다. C#에 제네릭이 아닌 모든 컬렉션은 ICollection을 기반으로 정의되어 있어서 배열이나 ArrayList 등의 개체에서 사용할 수 있습니다. 단, 배열은 ICollection을 기반으로 하지만 약속된 기능을 명시적으로 구현하고 있어서 ICollection 개체를 참조해야 사용할 수 있습니다.
▶ ICollection 인터페이스의 Count 속성
class Program { static void Main(string[] args) { int[] arr = new int[3]{1,2,4}; View(arr); ArrayList ar = new ArrayList(); ar.Add(2); ar.Add(3); View(ar); } private static void View(ICollection ic) { Console.WriteLine("Count:{0}", ic.Count); foreach (object obj in ic) { Console.Write("{0} ",obj); } Console.WriteLine(); } } |
▶ 실행 결과 Count:3 1 2 4 Count:2 2 3 |
CopyTo 메서드는 보관된 요소들을 입력 인자로 전달된 1차원 배열의 특정 인덱스에 복사하는 메서드입니다.
▶ ICollection 인터페이스의 CopyTo 메서드
class Program { static void Main(string[] args) { int[] srcarr = new int[3]{1,2,4}; int[] dstarr = new int[5]{11,12,131,4,15}; //dstarr개체의 인덱스 2위치에 srcarr 개체에 보관된 요소들을 복사 srcarr.CopyTo(dstarr, 2); View(dstarr); } private static void View(ICollection ic) { Console.WriteLine("Count:{0}", ic.Count); foreach (object obj in ic) { Console.Write("{0} ",obj); } Console.WriteLine(); } } |
▶ 실행 결과 Count:5 11 12 1 2 4 |
이 외에 쓰레드를 사용하는 비동기식 프로그래밍에서 동기화 가능 여부를 확인하는 속성과 동기화에 사용하는 개체를 참조하는 속성이 있습니다. 여기서는 이에 대한 설명은 생략하겠습니다.
너와 나의 연결고리 "공감"
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 9. 대리자와 이벤트 - 이벤트 (0) | 2016.05.03 |
---|---|
[C#] 9. 대리자와 이벤트 - 대리자 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IComparable 인터페이스와 IComparer 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IDictionary 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IList 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IEnumerable, IEnumerator 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - 개요 (0) | 2016.05.03 |
[C#] 8. 인터페이스와 컬렉션 - 인터페이스 (0) | 2016.05.03 |
[C#] 7.4 프로젝트 구현 - 초점이 기숙사 (잠자기, TV 시청) (0) | 2016.05.03 |
[C#] 7.4 프로젝트 구현 - 초점이 도서관 (책 읽기, 세미나) (0) | 2016.05.03 |