제약 조건의 역할 런타임 오류가 발생할 가능성이 있는 부분을 컴파일 타임 오류로 대체한다. 타입 매개변수로 사용할 수 있는 타입을 명확히 규정하여 사용자에게 도움을 준다. 제약조건은 타입 매개변수가 무엇을 해서는 안되는지를 정의할 수 없다. 이때, 타입 매개변수로 지정하는 타입이 IDisposable을 구현하고 있다면 추가 작업이 필요하다. 제네릭 메서드 내에서 타입 매개변수로 주어지는 타입을 이용하여 인스턴스를 생성할 경우 public interface IEngine { void DoWork(); } public class EngineDriverOne where T : IEngine, new() { public void GetThingsDone() { T driver = new T(); using (d..