generics는 타입으로 매개변수화된 클래스와 메서드를 작성하게 하여, 코드 중복이나 캐스팅 없이 타입 안전성과 재사용성을 제공합니다. **제약 조건(constraint)**은 제네릭 매개변수가 될 수 있는 타입을 제한하여, 그 멤버를 안전하게 사용할 수 있게 합니다. generics는 C#에 만연합니다(컬렉션 라이브러리 전체가 이를 사용).
generics가 해결하는 문제
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
