Bài tập C#

Repository generic lưu dữ liệu trong bộ nhớ bằng C#

Trong bài học này, bạn sẽ xây dựng một class repository generic có thể lưu bất kỳ kiểu dữ liệu nào mà vẫn đảm bảo an toàn kiểu.

Giới thiệu

Repository là lớp trung gian chịu trách nhiệm lưu trữ và truy xuất dữ liệu. Khi viết repository dưới dạng generic, bạn chỉ cần một cách cài đặt dùng chung cho nhiều loại dữ liệu như người dùng, sản phẩm hay đơn hàng, mà không cần ép kiểu.

Class Repository<T> lưu dữ liệu trong một List<T> private. Khi tạo new Repository<string>(), repository chỉ chấp nhận chuỗi, và mọi cố gắng thêm dữ liệu kiểu khác sẽ bị trình biên dịch báo lỗi. Thuộc tính All trả về IReadOnlyList<T>, cho phép đọc nhưng không cho sửa danh sách từ bên ngoài.

Ví dụ C# chạy được

C#
Chạy code →
Program.cs
using System;
using System.Collections.Generic;
class Repository<T>
{
    private readonly List<T> _items = new();
    public void Add(T item) => _items.Add(item);
    public IReadOnlyList<T> All => _items;
}
class Program
{
    static void Main() { var repo = new Repository<string>(); repo.Add("C#"); Console.WriteLine(repo.All[0]); }
}
Kết quả khi chạy
C#

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách