Tôi có nên kiểm tra xem khóa cụ thể có xuất hiện trong Từ điển không nếu tôi chắc chắn nó sẽ được thêm vào từ điển khi tôi truy cập mã để truy cập vào nó?Tôi có nên kiểm tra xem khóa cụ thể có trong Từ điển trước khi truy cập vào nó không?
Có hai cách tôi có thể truy cập vào các giá trị trong từ điển
- kiểm tra phương pháp containsKey. Nếu nó trả về true thì tôi truy cập bằng cách sử dụng indexer [key] của đối tượng dictionary.
hoặc
- TryGetValue đó sẽ trở lại đúng hay sai cũng như giá trị trả về thông qua tham số ra.
(2 sẽ hoạt động tốt hơn 1st nếu tôi muốn có được giá trị. Benchmark.)
Tuy nhiên nếu tôi chắc chắn rằng các chức năng mà được truy cập vào từ điển toàn cầu chắc chắn sẽ có chìa khóa rồi nên tôi vẫn kiểm tra sử dụng TryGetValue hoặc không kiểm tra, tôi nên sử dụng indexer [].
Hoặc tôi không bao giờ nên giả sử điều đó và luôn kiểm tra?
Phím bị thiếu thường là dấu hiệu của một vấn đề khác. Nếu bạn biết vấn đề là gì và có thể cung cấp một thông điệp hữu ích hơn, thì bạn nên cân nhắc việc ném ngoại lệ của riêng mình vì thông điệp kèm theo 'KeyNotFoundException' khó thu hẹp ở lần. –
Nó chắc chắn sẽ hữu ích nếu KeyNotFoundException cũng đã cung cấp khóa - nhưng khác hơn thế, chỉ cần theo dõi stack thường đủ cho tôi. Làm thế nào đến nay bạn sẽ làm điều này: kiểm tra mọi tham chiếu null có thể (không chỉ đối số, nhưng những điều bạn nội bộ mong đợi là không null) cho nullity và ném một ngoại lệ tùy chỉnh trên mỗi một trong những? Sẽ luôn có trường hợp ngoại lệ được ném bởi các bit của khung trong trường hợp không thống nhất nội bộ: nếu bạn cố gắng dự đoán từng phần riêng lẻ, mã sẽ kết thúc bằng nhiều trường hợp lỗi hơn là tiến trình. –