제네릭 (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

+ Recent posts