제네릭 (Generic)
미결정 상태의 데이타 타입을 클라이언트 코드에서 클래스 또는 메서드로 선언하고 인스턴스화할 때
지정하는 유연한 타입 지정방식이다. (.NET Framework버전 2.0 이후 형식 매개변수(Type Parameter)라는 개념으로 새롭게 도입되었다.)
제네릭 도입 이전에는 일반화된 알고리즘을 정의하기 위해서 모든 멤버들을 object 데이터 타입으로 다루어야만 했다.
값 타입의 객체를 object 데이터 타입으로 전달 할 때 내부적으로 박싱이 수행되는데
이것은 Garbage Collection을 유발하므로 성능에 악영향을 미치게 된다.
제네릭 알고리즘을 이용하면 원하는 타입을 지정하여 값 타입의 인스턴스를 참조 형태(by reference)가 아닌
값 그 자체(by Value)로 전달할 수 있으므로 내부적으로 더이상 박싱을 수행하지 않아도 된다.
제네릭 example (swap)
output :
100 and 200
200 and 100
유니티 and 언리얼
언리얼 and 유니티
(0.0, 0.0) and (3.0, 9.0)
(3.0, 9.0) and (0.0, 0.0)
형식 매개변수를 두 개 사용하는 새로운 클래스를 만들어서 사용해보자.
output:
상품 :weapon 가격 :450 상품 :potion 가격 :100
상품 :potion 가격 :450 상품 :weapon 가격 :100
'Programming > C++, C#' 카테고리의 다른 글
[C#] Lambda Expression (0) | 2018.06.07 |
---|---|
[C#] IEnumerator (0) | 2018.06.06 |
[C#] Interface (0) | 2018.06.06 |
[C#] Delegate , Event (0) | 2018.06.06 |
[C#] Out vs Ref (0) | 2018.06.06 |