구체적인 클래스가 아닌 인터페이스에 대해 프로그래밍하자.


객체지향을 위해 아래와 같이 작성할 수 있게 연습하자.

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>로 받자.


기타 등등


Posted by misty_
,