구체적인 클래스가 아닌 인터페이스에 대해 프로그래밍하자.
객체지향을 위해 아래와 같이 작성할 수 있게 연습하자.
1 2 3 | List<int> list = new List<int>(); ICollection<int> collection = list; IEnumerable<int> enumerable = list; | cs |
ICollection<T>는 제네릭 컬렉션을 조작하는 메서드들을 정의함으로
→ Add, Remove, Clear 등을 사용할 수 있다.
IEnumerable<T>는 지정된 형식의 컬렉션을 단순 반복할수 있게 지원하는 열거자를 노출한다.
→ GetEnumerator();
예를들어 리스트를 참조하는 곳에서 Add나 Remove의 동작을 원하지않고
요소를 꺼내기만 하고싶다면 IEnumerable<T>형으로 선언하면 원본 리스트를 건드릴 수 없다.
그 외에도 리스트 대신 배열을 담을 경우가 생긴다면 IEnumerable<T>로 선언하는 것이 좋다.
마찬가지로 Dictionary / SortedDictonary 등의 변화가 생길 가능성이 있다면 IDictonary<Tkey, Tvalue>로 받자.
기타 등등
'프로그래밍 공부 > C#' 카테고리의 다른 글
LINQ (0) | 2019.01.11 |
---|---|
델리게이트와 람다식 (0) | 2019.01.11 |
Effective C#/ 제네릭 활용 - 아이템 18~23 (0) | 2018.12.08 |
Effective C#/ .NET 리소스 관리 - 아이템 15~17 (0) | 2018.12.07 |
Effective C#/ .NET 리소스 관리 - 아이템 11~14 (0) | 2018.12.06 |