Generic — C# vs TypeScript

Học Generic sâu — khái niệm, constraint, variance, so sánh reified (C#) vs erased (TS).

Generic là gì?

Parametric polymorphism — viết code làm việc với nhiều type mà không sacrifice type safety.

Ví dụ đơn giản — function identity trả về đúng giá trị truyền vào:

// Không generic — phải viết cho từng kiểu
public int IdentityInt(int x) => x;
public string IdentityString(string x) => x;
// ... vô tận
// Generic — 1 lần cho mọi kiểu
public T Identity<T>(T x) => x;

Identity(42);          // T = int
Identity("hello");     // T = string
Identity(new User());  // T = User
Generic là 1 trong 3 dạng polymorphism:
  • Subtype (overriding) — Animal a = new Dog().
  • Ad-hoc (overloading) — cùng tên, signature khác.
  • Parametric (generic) — function/type làm việc với nhiều type.

Lộ trình section

TrangNội dung
1. Khái niệm & cú phápGeneric function, class, interface — cú pháp C# + TS song song
2. Constraint & Variancewhere T : ..., T extends ..., covariance / contravariance
3. C# vs TypeScriptReified (runtime info) vs Erased (compile-only) — implication thực tế
4. Câu hỏi phỏng vấn35+ Q&A Generic cho fresher/junior

Vì sao Generic quan trọng?

Type safety

Compiler bắt lỗi sớm. List<int> không nhận string.

Code reuse

1 implementation cho mọi type — không duplicate.

Performance (C#)

C# generic không boxing với value type. List<int> lưu int thật, không phải object.

Self-documenting

Repository<T> đọc dễ hơn nhiều Repository rồi guess type qua return.

© 2026 .NET Fresher Guide. All rights reserved.

Về Trang Web

Hướng dẫn toàn diện để chuẩn bị phỏng vấn vị trí .NET Fresher với nội dung từ lý thuyết đến thực hành.