Hãy nói rằng tôi có một phương pháp như sau:C# tối ưu việc sử dụng IDictionary cho tra cứu với khả năng không tìm thấy
internal MyClass GetValue(long key)
{
if (_myDictionary.ContainsKey(key))
return _myDictionary[key];
return null; // Not found
}
IDictionary<long,MyClass> _myDictionary=...
Nhưng đoạn mã trên có hai tra cứu trong từ điển:
- Các thử nghiệm cho sự tồn tại của khóa
- các hồi thực tế của giá trị
có cách nào tối ưu hơn để ph rase như một chức năng, do đó, chỉ có một tra cứu được thực hiện, nhưng trường hợp "không tìm thấy" vẫn được xử lý thông qua một trở về null (tức là, không thông qua một ngoại lệ không tìm thấy)?
Ví dụ, nó sẽ được tốt đẹp nếu tra cứu cho phím trở lại một số loại iterator mà có thể được sử dụng để lấy các giá trị hoặc một iterator không hợp lệ nếu giá trị không được tìm thấy như được thực hiện trong C++. Có lẽ C# có một cách tốt hơn để làm điều này cho các tính năng ngôn ngữ của nó.
Thực hiện tốt, và bạn nhận được dấu kiểm không chỉ cho tốc độ nhập nhanh của bạn :), nhưng quan trọng hơn đối với nhận xét ở trên mã ... –
Ngoài ra, điều này có thể được trừu tượng hơn nữa bằng cách sử dụng một phương pháp mở rộng: tĩnh T GetValue (từ điển này dict, phím TKey) {T tempVal = mặc định (T); dict.TryGetValue (khóa, ra tempVal); return tempVal; } ' –
SPFiredrake
@SPFiredrake, bạn nên đăng bài này như là một câu trả lời, tôi sẽ cung cấp cho bạn một upvote cho ý tưởng tuyệt vời. –