반응형
IEnumerable, ICollection, IList 에 대해 알아보겠다.
IEnumerable, ICollection, IList 3가지 모두 System.Collections 네임스페이스이다.
using System.Collecionts
[Envrionment]
OS : Windows 10
Tool : Visual Studio 2022
Framework : .Net 6
IEnumerable, ICollection, IList 는 반복할 수 있도록 하는 인터페이스이다. 하지만 3가지 모두 컬렉션을 실행한다는 점에서는 동일하지만 각자 사용할 수 있는 범위가 다르다.
1. IEnumerable
IEnumerable 는 모든 열거자의 기본 인터페이스이다. 열거자를 사용하여 컬렉션의 데이터를 읽을 수는 있지만 내부 컬렉션을 수정할 수는 없다. 단순 Loop 를 사용하여 반복순회하는 경우에 적합하다.
속성 | 설명 |
Current | 컬렉션에서 열거자의 현재 위치에 있는 요소를 가져온다. |
메서드 | 설명 |
GetEnumerator() | 컬렉션을 반복하는 열거자를 반환한다. |
MoveNext() | 컬렉션의 다음 요소로 이동한다. |
Reset() | 컬렉션의 첫 번째 요소 앞의 초기 위치에 열거자를 설정한다. |
IEnumerator enumerator = list.GetEnumerator();
while (enumeraotr.MoveNext())
{
...
}
foreach (var item in list)
{
...
}
컬렉션을 단순 반복 읽어와 처리할 때 유용하며 컬렉션의 수정이 되지 않으므로 캡슐화가 제공된다.
2. ICollection
ICollection 는 IEnumerable 를 상속받는 확장되었다. 그러므로 IEnumerable 보다 특수화 된 인터페이스이다.
컬렉션의 요소에 액세스가 가능해진다.
속성 | 설명 |
Conut | ICollection<T>에 포함된 요소 개수를 가져온다. |
IsReadOnly | ICollection<T>가 읽기 전용인지 여부를 나타낸다. |
메서드 | 설명 |
Add(T) | ICollection<T>에 항목을 추가한다. |
Clear() | ICollection<T>에서 항목을 모두 제거한다. |
Contains(T) | ICollection<T>에 특정 값이 들어있는 여부를 확인한다. |
CopyTo(T[], INt32) | 특정 ICollection<T> 인덱스부터 시작하여 Array의 요소를 Array에 복사한다. |
GetEnumerator() | 컬렉션을 반복하는 열거자를 반환한다. |
Remove(T) | ICollection<T>에서 맨 처음 발견되는 특정 개체를 제거한다. |
3. IList
IList 는 인덱스롤 각각 액세스할 수 있는 제네릭이 아닌 개체 컬레션이다.
IEnumerable, ICollection Interface 를 모두 상속 받는다. 요소를 추가, 삭제를 허용하며 index 형식으로 요소에 접근 가능하다.
속성 | 설명 |
Count | ICollection 에 포함된 요소 수를 가져온다. |
IsFixedSize | IList의 크기가 고정되어 있는지 여부를 가져온다. |
IsReadOnly | 일기 전용인지 가져온다. |
IsSynchronized | 엑세스가 동기화되어 스레드로부터 안전하게 보호되는지를 알 수 있다. |
Item[Int32] | 지정한 Index의 요소를 가져오거나 설정할 수 있다. |
SyncRoot | ICollection에 대한 액세스를 동기화하는데 사요할 수 있는 개체를 가져온다. |
메서드 | 설명 |
Add(Object) | Object 항목을 추가한다. |
Clear() | 항목을 모두 제거한다. |
Contains(Object) | 특정값이 들어 있는지 여부를 확인한다. |
CopyTo(Array, Int32) | 특정 인덱스부터 시작하여 Array의 요소를 복사한다. |
GetEnumerator() | 컬레션을 반복하는 열거자를 반환한다. |
IndexOf(Object) | 특정 항목의 인덱스를 결정한다. |
Insert(Int32, Object) | 지정된 Index에 삽입한다. |
Remove(Object) | 맨 처음 발견되는 특정 개체를 제거한다. |
RemoveAt(Int32) | 지정한 Index부터 항목을 제거한다. |
반응형
'Programming > C# & .NET' 카테고리의 다른 글
[C#] DirectoryInfo 클래스 (디렉터리 복사, 이동, 이름 바꾸기, 만들기 및 삭제) (0) | 2022.06.07 |
---|---|
[C#] The format of value 'application/json;charset=UTF-8' is invalid (1) | 2022.05.31 |
[C#] SYSLIB0014: WebRequest, HttpWebRequest, ServicePoint, WebClient는 더 이상 사용되지 않습니다. (0) | 2022.05.31 |
[C#] 현재 실행 Method 이름 가져오기 (1) | 2022.05.24 |
[C#] 'Obsolete' Attribute - 더 이상 사용하지 않는 것에 효율적으로 알리는 방법 (0) | 2022.02.28 |
댓글