C#에서 object, generic타입은 모두 유연한 데이터형을 사용하기 위한 타입이다. object는 모든 데이터형의 최상위 타입으로 어떤 데이터 형이든 저장할 수 있는 유연성을 제공한다. 하지만 object를 사용할 때는 값 타입을 참조형으로 변환할 때 박싱/언박싱이 발행하여 성능에 영향이 끼친다. 제네릭 타입의 경우에는 컴파일 타임에 타입을 지정해줘 object에 비해 타입 안전성이 높고, 값 타입을 박싱 / 언박싱 하지도 않아 유연성을 높여준다. 다만, .NET Framework 2.0 보다 낮아 제네릭을 지원하지 않는 경우에는 object 타입을 사용해야할 수도 있다.