Generics cho phép bạn viết các class và method được tham số hóa theo một kiểu, mang lại an toàn kiểu và khả năng tái sử dụng mà không cần lặp code hoặc ép kiểu. Constraint giới hạn những kiểu nào mà một tham số generic có thể là, cho phép dùng an toàn các thành viên của chúng. Generics có mặt khắp nơi trong C# (toàn bộ thư viện collection đều dùng chúng).
Vấn đề mà generics giải quyết
=> arr[i];
=> arr[i];
x = Get([] { , , }, );
