본문 바로가기
C#

[C#] IList<T>, IList

by DANEW 2023. 9. 8.

IList<T> 인터페이스

 

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

개별적으로 인덱스에 의해 액세스될 수 있는 개체의 컬렉션을 나타냅니다.

learn.microsoft.com

public interface IList<T> : ICollection<T>, IEnumerable<T>, IEnumerable
{
    // 인덱서를 통해 특정 위치의 요소를 읽고 씀
    T this[int index] { get; set; }
 
    // 선형(linear search)를 이용해서 목록의 특정 요소에 접근
    // 지정된 요소를 찾지 못하면 -1
    int IndexOf(T item);
 
    // 요소 삽입
    void Insert(int index, T item);
 
    // 요소 제거
    void RemoveAt(int index);
}

- 특정 위치에 있는 요소에 접근하는 기능을 제공하는 컬렉션을 위한 표준 인터페이스

반응형

IList 인터페이스

 

IList 인터페이스 (System.Collections)

인덱스로 각각 액세스할 수 있는 제네릭이 아닌 개체 컬렉션을 나타냅니다.

learn.microsoft.com

public interface IList : ICollection, IEnumerable
{
    object this[int index] { get; set; }
 
    bool IsReadOnly { get; }
    bool IsFixedSize { get; }
 
    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 RemoveAt(int index);
}


- ICollection에서 물려받은 멤버가 적기 때문에, IList에서 더 많은 멤버를 정의
- IList 인터페이스의 Add 메서드는 정수(새로 추가된 항목의 색인)을 돌려줌. 제네릭 버전은 void

 

그 밖에

- 범용 List<T> 클래스는 IList<T>와 IList의 최소한의 구현에 해당
- C# 배열도 IList의 제네릭 버전과 비제네릭 버전을 모두 구현
 * 단, 요소를 추가/제거하는 메서드들은 명시적 인터페이스 구현에 의해 숨겨져 있으며,


  호출시 NotSupportedException을 던짐
- IList의 인덱서를 통해서 다차원 배열에 접근하려 하면 ArgumentException 예외가 발생함

반응형

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

[C#] HashSet<T>, SortedSet<T>  (0) 2023.09.16
[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#] ICollection<T>, ICollection  (1) 2023.08.31
[C#] AppContext  (1) 2023.08.30
[C#] Process  (1) 2023.08.29
[C#] Environment  (0) 2023.08.28