Generic Object là gì?

Tháng 2 10, 2025

Generic là một kỹ thuật lập trình mạnh mẽ trong C#.NET, cho phép viết code có thể tái sử dụng cho nhiều kiểu dữ liệu khác nhau mà không cần phải viết lại logic cho từng kiểu. Generic hoạt động dựa trên việc sử dụng các tham số kiểu (type parameters), được biểu diễn bằng các chữ cái viết hoa trong dấu ngoặc nhọn <>, ví dụ như List<T>, Dictionary<TKey, TValue>. Trong đó, T, TKey, TValue là các tham số kiểu đại diện cho kiểu dữ liệu cụ thể sẽ được sử dụng khi khởi tạo đối tượng.

Một trong những ứng dụng phổ biến nhất của Generic là trong việc tạo ra các collection (tập hợp) như List<T>. Trước khi có Generic, để tạo một danh sách các đối tượng Student, ta phải sử dụng ArrayList và ép kiểu mỗi khi lấy phần tử ra. Điều này tiềm ẩn nguy cơ lỗi runtime nếu ép kiểu sai.

// Không có generic
ArrayList students = new ArrayList();
students.Add(new Student());
students.Add(new Car()); // Không phát hiện lỗi lúc compile

Student first = (Student)students[0]; // Cần ép kiểu, có thể gây lỗi runtime

Với Generic, List<T> giải quyết vấn đề này bằng cách chỉ cho phép thêm các đối tượng thuộc kiểu T vào danh sách. Compiler sẽ phát hiện lỗi ngay lúc biên dịch nếu ta cố gắng thêm một đối tượng không đúng kiểu.

// Sử dụng generic
List<Student> students = new List<Student>();
students.Add(new Student()); 
students.Add(new Car()); // Lỗi compile time

Student first = students[0]; // Không cần ép kiểu

Việc sử dụng Generic mang lại nhiều lợi ích:

  • Tái sử dụng code: Chỉ cần viết một lần cho nhiều kiểu dữ liệu. Ví dụ, class List<T> có thể dùng cho List<int>, List<string>, List<Student>,…
  • An toàn kiểu: Compiler kiểm tra kiểu dữ liệu lúc biên dịch, giảm thiểu lỗi runtime.
  • Hiệu năng: Tránh việc boxing/unboxing khi làm việc với các kiểu giá trị, tăng hiệu năng chương trình.
  • Dễ đọc và bảo trì: Code rõ ràng hơn, dễ hiểu và dễ bảo trì.

Generic không chỉ được sử dụng trong các collection mà còn trong việc định nghĩa các phương thức (Generic Method) và lớp (Generic Class). Ví dụ, một phương thức Swap<T> có thể hoán đổi giá trị của hai biến thuộc bất kỳ kiểu dữ liệu nào.

public static void Swap<T>(ref T a, ref T b)
{
    T temp = a;
    a = b;
    b = temp;
}


int x = 10;
int y = 20;
Swap<int>(ref x, ref y); // Hoán đổi hai số nguyên

string str1 = "Hello";
string str2 = "World";
Swap<string>(ref str1, ref str2); // Hoán đổi hai chuỗi

Tóm lại, Generic là một tính năng quan trọng trong C#.NET, giúp viết code linh hoạt, an toàn và hiệu quả hơn. Nó là nền tảng cho nhiều công nghệ khác như LINQ và đóng vai trò then chốt trong việc phát triển các ứng dụng hiện đại. Hiểu rõ về Generic Object Là Gì và cách sử dụng nó sẽ giúp lập trình viên nâng cao chất lượng code và tối ưu hiệu năng ứng dụng.

Leave A Comment

Create your account