(+84) 236.3827111 ex. 402

Ví dụ về sử dụng TryAdd trong C#


using System;

using System.Collections.Concurrent; // BẮT BUỘC có dòng này ở đầu file để dùng TryAdd trong .NET 4.8

// ... bên trong hàm xử lý:

// Lưu ý: DSNV1 phải được khai báo là: ConcurrentDictionary<string, NhanVien> DSNV1 = new ConcurrentDictionary<string, NhanVien>();

while (true){

    Console.WriteLine("nhập 0 để đến thoát nhập, nhập B cho nhân viên biên chế, H cho nhân viên hợp đồng ");

    String Option = Console.ReadLine().ToUpper();

    if (Option == "0")  break;

    else if (Option == "B")    NV = new NVBC();

    else if (Option == "H")    NV = new NVHD();

    else   {

        Console.WriteLine("Chỉ nhập 0 or B or H");

        continue; // Dùng continue để quay lại đầu vòng lặp nếu nhập sai Option

    }

    if (NV is NVBC || NV is NVHD)   {

        while (true)  {

            NV.Nhap();           

                                   // 1. Thực hiện nhập thông tin nhân viên

                                 // 2. Dùng TryAdd để kiểm tra và thêm vào Dictionary

                                 // Nếu chưa có mã này: TryAdd thêm vào, trả về true -> chạy vào if -> break

            if (DSNV1.TryAdd(NV.MaNhanVien, NV))  {

                Console.WriteLine("Thêm nhân viên thành công!");

                break; // Thoát vòng lặp nhập thông tin

            }   else   {

                // Nếu mã đã tồn tại: TryAdd trả về false -> chạy vào else -> bắt nhập lại

                Console.WriteLine("Lỗi: Trùng mã nhân viên! Vui lòng nhập lại.");

            }

        }

    }

}

 

Những điểm cải tiến trong đoạn code mới:

  • Loại bỏ hoàn toàn try-catch: Luồng chương trình trở nên minh bạch, tốc độ xử lý nhanh hơn do không bị tốn tài nguyên đóng gói exception.

 Xử lý đúng Option nhập sai: Thêm continue ở nhánh else chọn Option để chương trình không nhảy xuống khối kiểm tra if (NV is NVBC...) khi người dùng nhập linh tinh.

Tăng trải nghiệm người dùng: Thông báo lỗi giờ đây chỉ rõ nguyên nhân là "Trùng mã nhân viên" (vì việc ép kiểu dữ liệu sai định dạng số/ngày tháng nên được TryParse kiểm tra ngay bên trong phương thức NV.Nhap()).