object 형식
박싱과 언박싱
int a = 5;
// a의 데이터를 복사해 Heap 메모리에 할당 => 박싱
// 암시적으로 발생
objecet b = a;
int a = 5;
object b = a;
// b의 데이터를 복사해 스택 메모리에 할당 => 언박싱
// 명시적으로 선언해야 함
int c = (int)b;
제네릭(Generic)
public void Swap(ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
public void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
제네릭 형식, 메서드, 대리자 또는 로컬 함수의 형식 매개 변수에 대한 인수로 사용되는 형식에 대한 제약 조건을 지정한다.
제약 조건은 인터페이스, 기본 클래스를 지정하거나 제네릭 형식을 참조, 값 또는 관리되지 않는 형식으로 요구 할 수 있다.
형식 인수에 있어야 하는 기능을 선언하고, 선언된 기본 클래스 또는 구현된 인터페이스 다음에 배치 해야한다.
출처:MSDN 공식 문서
제네릭 where에서 new()는 매개변수가 없는 생성자가 있어야한다.