Tôi thường thấy mình tạo ra một Dictionary
với một lớp giá trị không tầm thường (ví dụ: List
), và sau đó luôn viết cùng một mẫu mã khi điền dữ liệu..NET Dictionary: nhận hoặc tạo mới
Ví dụ:
var dict = new Dictionary<string, List<string>>();
string key = "foo";
string aValueForKey = "bar";
Đó là, tôi muốn chèn "bar"
vào danh sách tương ứng với chìa khóa "foo"
, nơi chính "foo"
có thể không được ánh xạ tới bất cứ điều gì.
Đây là nơi mà tôi sử dụng mô hình không ngừng lặp đi lặp lại:
List<string> keyValues;
if (!dict.TryGetValue(key, out keyValues))
dict.Add(key, keyValues = new List<string>());
keyValues.Add(aValueForKey);
Có một cách thanh lịch hơn để làm điều này?
câu hỏiliên quan mà không có câu trả lời cho câu hỏi này:
- Is there an IDictionary implementation that returns null on missing key instead of throwing?
- Find-or-insert with only one lookup in c# dictionary
- Dictionary returning a default value if the key does not exist
Điều gì sẽ xảy ra nếu khóa tồn tại nhưng Danh sách là rỗng? –
@Barabba Nói chung tôi nghĩ rằng việc thêm một giá trị null sẽ được coi là không phù hợp và bạn mong đợi * mã để chỉ ra bom và sửa lỗi thêm khóa không, không phải bằng cách cố gắng xử lý nó ở đây. – Servy
@Servy ok, nhưng nếu chúng ta có được một danh sách kết quả từ một nguồn của bên thứ ba thì sao? Điều duy nhất để đối phó với nó là xử lý các giá trị null, tôi có sai không? Nó xảy ra với tôi mỗi ngày :) –