Мы хотели назначить / добавить элемент в словарь, используя индекс ключа, например:
Dictionary<string, object> dict = new Dictionary<string, object>();
dict["key"] = dict["key"] ?? "object";
Но это приводит к: " Указанный ключ не присутствовал в словаре. "
Есть ли способ присвоить значения этому словарю так же, как я присваиваю значения сеансам, используя null coalesce:
Session["Member"] = Session["Member"] ?? new Member();
Спасибо
Редактировать: Я на самом деле пытался переопределить индексатор из дочернего класса словаря, но безрезультатно.Реализация интерфейса IDictionary показалась бы слишком большой, потому что нам просто нужна функциональность приведенного ниже кода (т. Е. Возвращать ноль, если ключ не найден).Поэтому я думаю, может быть, мы могли бы использовать такие расширения, как:
public static TValue [this Dictionary<TKey, TValue> thisDictionary, TKey key] {
get { return thisDictionary.ContainsKey(key) ? thisDictionary[key] : null; }
set { thisDictionary[key] = value; }
}
, но он не работает или даже не компилируется.
Есть ли какие-либо другие более простые способы, чтобы мы могли повторно использовать эту функцию индексатора?Большое спасибо.