generic ให้คุณเขียน class และ method ที่มี parameter เป็นชนิดข้อมูล โดยให้ ความปลอดภัยด้านชนิดและการนำกลับมาใช้ใหม่ โดยไม่ต้องเขียนโค้ดซ้ำหรือ cast ส่วน constraint จำกัดว่า generic parameter เป็นชนิดใดได้บ้าง ทำให้ใช้สมาชิกของมันได้อย่างปลอดภัย generic มีอยู่ทั่วไปใน C# (ไลบรารี collection ทั้งหมดใช้มัน)
ปัญหาที่ generic แก้ไข
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
