Hãy tưởng tượng một đối tượng bạn đang làm việc có một bộ sưu tập các đối tượng khác được liên kết với nó, ví dụ như bộ sưu tập Điều khiển trên một WinForm. Bạn muốn kiểm tra một đối tượng nào đó trong bộ sưu tập, nhưng bộ sưu tập không có phương thức Contains()
. Có một số cách để giải quyết vấn đề này.Sử dụng ngoại lệ không được xử lý thay vì Chứa()?
- Thực hiện phương thức
Contains()
của riêng bạn bằng cách lặp qua tất cả các mục trong bộ sưu tập để xem liệu một trong số đó có phải là thứ bạn đang tìm kiếm hay không. Điều này có vẻ là phương pháp "thực hành tốt nhất". - Gần đây tôi đã xem qua một số mã nơi thay vì một vòng lặp, đã có một nỗ lực để truy cập vào các đối tượng bên trong một câu lệnh try, như sau:
try { Object aObject = myCollection[myObject]; } catch(Exception e) { //if this is thrown, then the object doesn't exist in the collection }
Câu hỏi của tôi là như thế nào kém một thực hành lập trình để bạn xem xét lựa chọn thứ hai là và tại sao? Hiệu suất của nó so với một vòng lặp thông qua bộ sưu tập như thế nào?