본문 바로가기
[ Program ]/C#

【 C# 】 컬렉션의 기본 인터페이스_#

by 관이119 2012. 9. 17.
† 가끔은 구름이 되고 싶다_ † | 성숙꼬맹
http://blog.naver.com/phoogu/110013603765

1. 컬렉션류 인터페이스의 특징

2. IEnumerable과 IEnumerator 인터페이스

3. ICollection 인터페이스

4. IList 인터페이스

5.IDictionary 인터페이스

6. IDictionaryEnumerator 인터페이스


1. 컬렉션류 인터페이스의 특징

- 인터페이스들은 컬렉션류 클래스들의 일관성과 사용상의 편리성을 제공한다.

- 컬렉션 인터페이스들은 많은 컬렉션 클래스들 사이에 공통된 사용자 패턴을 제공한다.

- System.Collections

- 컬렉션류 인터페이스의 상속 구조

2. IEnumerable과 IEnumerator 인터페이스

- 특정 클래스가 IEnumerable 인터페이스를 구현했다면 IEnumerator를 사용해서 내부의 데이터를 순방향으로만 접근할 수 있는 기능을 가진 것이다.

- IEnumerator형으로 얻은 객체는 읽기전용 커서를 제공하고 있으며, 데이터의 집합에 대한 순방향으로 검색할 수 있다.

- IEnumerable 인터페이스의 ㅎ마수

: public interface IEnumerable

{

IEnumerator GetEnumerator();

}

- 커서를 데이터 집합의 시작점으로 돌리는 기능도 제공한다.

- IEnumerator 인터페이스 내부의 멤버

: object Current-> 컬렉션에서 현재 객체에 대한 참조를 반환하는 읽기전용 속성

: bool MoveNext()-> 열거자를 컬렉션의 다음 요소로 커서를 이동시킨다.

-> 다음 요소가 존재하지 않는다면 false를, 존재한다면 true 리턴한다.

-> 커서를 이동시킨 뒤 Current 속성을 이용해서 데이터를 추출

: void Reset()-> Current 포인터를 컬렉션의 처음 부분 앞에 있는 정의하지 않은 값으로 다시 설정한다.

-> Reset()을 호출한 후 Current로 접근하기 전에 MoveNext() 호출

3. ICollection 인터페이스

- IEnumerable를 상속하기 때문에 기본적으로 나열의 속성을 가지고 있다.

- 속성과 함수들

: int Count

-> 컬렉션의 객체 수 반환

: bool IsSynchronized

-> 다중 스레드된 액세스를 위해 컬렉션에 대한 액세스를 동기화한 경우 true를 반환한다. 컬렉션이 동기화되는지에 따라서 쓰레드 안정성이 있는지 검사한다

: object SyncRoot

-> 스레드에서 컬렉션에 대한 액세스를 동기화하기 위해 사용할 수 있는 객체 반환

-> CLR은 자동으로 어떤 .NET 형식 객체라도 동기화루트가 되도록 한다.

-> 하나 이상의 코드 문장이 동시에 한 스레드에 의해서만 실행되는 것을 확실하게 하기 위해 잠그거나 해제할 수 있다.

-> ICollection.SyncRoot를 실행하면 항상 적절한 SyncRoot 객체를 반환한다.

: void CopyTo(Array array, int index)

-> 지정한 배열 위치부터 컬렉션의 요소를 배열로 복사한다.

4. IList 인터페이스

- 데이터의 삽입, 삭제, 검색, 인덱서 등의 작업을 할 수 있다.

- IList의 속성

: bool IsFixedSize { get; }

-> 리스트가 고정 길이 리스트인지 체크한다.

: bool isReadOnly { get; }

-> 리스트가 읽기 전용인지 체크한다.

: object this[int index] { get; set; }

-> 인덱스 값으로 데이터를 얻거나 추가할 수 있다.

- IList의 함수

: int Add(object value)

-> 리스트 끝에 데이터를 추가할 수 있다.

: void Clear()

-> 리스트의 모든 데이터를 제거한다.

: bool Contains(object value)

-> 어떤 데이터가 리스트 내에 존재하는지 여부를 체크한다.

: int indexOf(object value)

-> 리스트 내의 특정 데이터의 위치를 반환한다.

: void Insert(int index, object value)

-> 리스트 내의 특정 위치에 데이터를 삽입한다.

: void Remove(object value)

-> 매개변수로 입력된 객체를 리스트 내에서 제거한다.

: void RemeveAt(in index)

-> 참조 또는 인덱스에 의해 지정한 인덱스의 데이터를 제거한다.

5.IDictionary 인터페이스

- 키와 값으로 대응시켜 데이터를 삽입하고 추출하는 방법을 제공한다.

- 키와 값으로 사용되는 데이터형은 object

- 키는 유일해야 한다.

- IDictionary 인터페이스의 속성

: bool IsFixedSize { get; } -> 컬렉션의 크기가 정해져 있는지 검사한다.

: bool IsReadOnly { get; } -> 컬렉션이 읽기전용인지 검사한다.

: ICollection Keys {get; } -> 컬렉션 내의 모든 키를 나열한다.

: ICollection Values { get; } -> 컬렉션 내의 모든 값을 나열한다.

- IDictionary 인터페이스의 함수

: void Add(object key, object value)

-> 키와 값을 전달하여 데이터를 컬렉션에 추가한다.

: void Clear()

-> 컬렉션을 비운다.

: bool Contains(object Key)

-> 특정 키가 데이터와 연관되어 있는지 검사한다.

: IDictionaryEnumerator GetEnumerator()

-> 키와 값을 나열한다. IDictionaryEnumerator 인터페이스를 반환한다.

: void Remove(object key)

-> 삭제할 값의 키를 전달하여 데이터를 컬렉션에서 삭제한다.

6. IDictionaryEnumerator 인터페이스

- 키와 값을 묶어서 한꺼번에 관리할 수 있도록 해준다.

- IDictionaryEnumerator 인터페이스 속성

: DictionaryEntry Entry { get; } -> 열거 요소 내의 키와 값을 가져온다.

: object Key { get; } -> 열거 요소 내의 키를 가져온다.

: object Value { get; } -> 열거 요소 내의 값을 가져온다.

댓글