VieTopikKhoá học
  • Games
  • Cá nhân
Tải app
© 2026 VieTopikChính sách bảo mậtĐiều khoản sử dụngCài appEnglish
  • Trang chủ
  • Học
  • Luyện thi
  • Cẩm nang
  • Games
  • Cá nhân
C# CoreDữ liệu
Bài 9/19
5 phút

Dictionary

Bình luận
Nội dung bài · 5 mục
  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Kho có hàng nghìn sản phẩm, và bạn cần biết ngay mã PEN-01 còn bao nhiêu cái. Duyệt cả list để tìm thì chậm và dài dòng. Dictionary cho phép tra thẳng bằng mã.

Khái niệm

📖 Dictionary: tập hợp các cặp khoá–giá trị, tra giá trị theo khoá, viết là Dictionary<kiểu khoá, kiểu giá trị>.

🔑 Khoá (key): giá trị dùng để tra cứu, mỗi khoá chỉ xuất hiện một lần trong dictionary.

Ví dụ

Dictionary<string, int> stock =
    new Dictionary<string, int>();

stock["PEN-01"] = 120;
stock["BOOK-02"] = 35;

Console.WriteLine(stock["PEN-01"]);          // 120
Console.WriteLine(stock.Count);              // 2
Console.WriteLine(stock.ContainsKey("X"));   // False

foreach (var item in stock)
{
    Console.WriteLine($"{item.Key}: {item.Value}");
}
  • Dictionary<string, int>: khoá là mã sản phẩm (string), giá trị là số lượng (int).
  • stock["PEN-01"] = 120 thêm cặp mới, hoặc ghi đè nếu khoá đã có.
  • stock["PEN-01"] đọc giá trị theo khoá.
  • ContainsKey kiểm tra khoá có tồn tại không.
  • foreach lấy ra từng cặp, đọc bằng .Key và .Value.
PEN-01 120 BOOK-02 35
Dictionary stock: mỗi khoá trỏ tới một giá trị

Thử ngay

Dán vào Program.cs rồi chạy dotnet run:

Dictionary<string, int> stock =
    new Dictionary<string, int>();

stock["PEN-01"] = 120;
stock["BOOK-02"] = 35;
stock["PEN-01"] = 80;

Console.WriteLine(stock.Count);
Console.WriteLine(stock["PEN-01"]);

Đoán trước khi chạy: gán PEN-01 hai lần thì dictionary có 2 hay 3 cặp?

Xem kết quả
2
80

Vẫn 2 cặp. Khoá là duy nhất, nên lần gán thứ hai chỉ ghi đè giá trị cũ của PEN-01 thành 80.

Lỗi hay gặp

Đọc khoá không tồn tại. Chương trình dừng với lỗi KeyNotFoundException.

// SAI — lỗi khi chạy: không có khoá "RULER"
Dictionary<string, int> stock =
    new Dictionary<string, int>();
stock["PEN-01"] = 120;

Console.WriteLine(stock["RULER"]);
// ĐÚNG — kiểm tra trước khi đọc
Dictionary<string, int> stock =
    new Dictionary<string, int>();
stock["PEN-01"] = 120;

if (stock.ContainsKey("RULER"))
{
    Console.WriteLine(stock["RULER"]);
}
else
{
    Console.WriteLine("Không có mã này");
}

Dùng Add với khoá đã có. Add không ghi đè mà báo lỗi ArgumentException.

// SAI — lỗi khi chạy: khoá PEN-01 đã tồn tại
Dictionary<string, int> stock =
    new Dictionary<string, int>();
stock.Add("PEN-01", 120);
stock.Add("PEN-01", 80);
// ĐÚNG — gán qua [ ] để thêm mới hoặc ghi đè
Dictionary<string, int> stock =
    new Dictionary<string, int>();
stock["PEN-01"] = 120;
stock["PEN-01"] = 80;

Tóm tắt

  • Dictionary lưu cặp khoá–giá trị và tra giá trị thẳng theo khoá.
  • Mỗi khoá là duy nhất. Gán d[key] = value sẽ thêm mới hoặc ghi đè.
  • Đọc khoá không tồn tại là lỗi, nên kiểm tra bằng ContainsKey trước.
  • foreach lấy ra từng cặp với .Key và .Value.
Array và ListClass và object

Bình luận

Đang tải bình luận…

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt