개발/C#
[C#] 제네릭과 컬렉션
민돌이2
2018. 11. 29. 03:00
제네릭과 컬렉션
제네릭(Generic)
제너릭은 Generalize의 줄인말이다. 단어 뜻대로 일반화라는 뜻이다.
다양한 형을 지정해도 같은 처리를 실행하고 싶을 떄 사용한다.
예를 들어 서로 값을 교체하는 Swap메소드를 만드는데 정수든지 소수든지 문자열이든지 똑같은 처리를 하고 싶을때 사용하면 좋다.
예제)
public void Swap(int x, int y) { t = x; y = x; x = t; }
public void Swap(float x, float y) { t = x; y = x; x = t; }
public void Swap(string x, string y) { t = x; y = x; x = t; }
위의 예제를 아래와 같이 작성할 수 있게 된다.
예제)
public void Swap<T>(T x, T y) { t =x; y = x; x =t; }
위와같이 공통된 메소드가 있을 떄 변수의 형 때문에 오버로딩 할 필요가 없다는 것이다.
편리한 기능이지만 주의할점이 있다.
제네릭을 사용하면 지정한 변수로 메서드를 호출할 때는 모든 형마다 해당 메소드가 없으면 사용할 수가 없다.
예제)
Swap<int>( 3, 5 );
컬렉션(Collection)
오브젝트를 관리하는 방법이다. 컬렉션은 제네릭으로 만들지 않으면 장점이 없으므로 반드시 제네릭 컬렉션을 사용한다.
예제)
ArrayList list = new ArrayList(); // 제네릭으로 만들어지지 않은 컬렉션은 사용하지 않음
List<string> list = new List<string>();
배열과 유사한 점이 있다. 한 변수이름아래에 리스트를 만들어 보관한다는 점인데, 배열과 컬렉션의 큰 차이점이 있다. 배열은 선언 후 나중에 요소의 개수를 바꿀 수 없지만 컬렉션은 무한히 추가할 수 있다.
예제1)
List list = new List<String>();
list.Add("ABC");
list.Add("DEF");
예제2)
List list = new List<string> { "ABC" , "DEF" );
예제1를 예제2로 줄여 사용할 수 있다. 배열 생성시와 같은 방식이다.
컬렉션 클래스
클래스 | 설명 |
Dictionary<TKey, TValue> | 키와 값으로 구성된 컬렉션을 표현 |
HashSet<T> | 값의 집합을 표현 |
LinkedList<T> | 양방향 링크드리스트(LinkeList)를 표현 |
List<T> | 인덱스로 접근할 수 있는 리스트를 표현 |
Queue<T> | 오브젝트의 선입선출(FIFO) 컬렉션을 표현 |
Stack<T> | 오브젝트의 후입선출(LIFO) 컬렉션을 표현 |
http://mrw0119.tistory.com/16
728x90