상세 컨텐츠

본문 제목

[C#] Collection과 Interface

Study/Language

by Arq.Dev5igner 2021. 11. 15. 15:09

본문

using System;
using System.Collections.Generic;
 
clss Program {
    static void Main() {
        List<int> c1 = new List<int>();
        c1.Add(10);
        c1.Add(20);
        c1.Clear();
        int n = c1[0]; // IList<T>에 있는 메소드(인덱서)
        
        SortedSet<int> c2 = new SortedSet<int>();
        c2.Add(10);
        c2.Add(20);
        c2.Clear();
        int n2 = c2[0]; // error
    }
}

위의 코드에서 List는 동적배열이고 SortedSet은 트리구조이다.
분명 내부적으로 데이터를 다루는 코드는 다를텐데 요소를 추가하는 메소드는 Add로 같다.
또한 모든 요소를 지우는 Clear메소드도 같다.
다른 구조를 가지지만 메소드 이름이 같으니 쓰기 편한 점이 있다.
이처럼 컬렉션을 만들 때 직접 만들기보단 Interface기반으로 설계를 하면 좋을 것이다.

위의 두가지 구조 중 List의 경우 IList<T> 인터페이스를 구현했지만, SortedSet의 경우 IList<T> 인터페이스를 받지 않았다.
따라서 List는 배열과 같이 10번 라인과 같이 쓸 수 있지만, SortedSet은 16번 라인과 같이 에러가 난다.

 

 

 ① 서로 다른 컬렉션에 있는 동일한 기능을 수행하는 메소드는 동일한 이름을 사용하는 것이 좋다.

    => Interface 기반 설계

 

 ② Collection 관련 주요 인터페이스(Generic)

 

[C#] Collection과 Interface (tistory.com)

'Study > Language' 카테고리의 다른 글

[C++ STL] list 개요  (0) 2022.02.25
[C++ STL] deque  (0) 2022.02.25
[C++ STL] map  (0) 2022.02.25
[C++ STL] std::vector 주요 멤버 함수 목록  (0) 2022.02.25
[C#] 열거자 (Enumerator) / Collection과 인덱서(indexer)  (0) 2021.11.15

관련글 더보기