Как обновить значение, хранящееся в словаре в C #?

Во избежание коллизий - в общем, проблемы с объектами, которые не имеют свойства со значением, которое вы ожидаете. Объекты в JS часто используются в качестве карт-значений ключей, а ключи могут быть произвольными строками - например, __defineGetter__, hasOwnProperty или что-то менее специальное. Теперь, когда вы хотите вызвать такую ​​функцию на неизвестном объекте, например hasOwnProperty, часто используется в общих функциях перечисления, где любой JSON может быть передан, - вы никогда не можете быть уверены, есть ли у вас перезаписанное свойство (это может даже не быть быть функцией) или оригинал, который вы хотите, или же объект наследует свойство вообще. Чтобы избежать этой проблемы (или также эта ошибка IE ), вам придется использовать Object.prototype.hasOwnProperty.call - это уродливо.

Итак, имена, на которых распространяются все эти функции на Object полезен, это более чистый API, который отделяет методы отражения от интерфейса приложения объекта. Это также помогает оптимизировать (упрощает статический анализ) и упрощает ограничение доступа к API отражения в песочницах - по крайней мере, это была идея дизайна .

Вы можете быть счастливы в прототипе есть defineProperty, но вы можете безопасно использовать его только при работе с известными объектами. Если вы все еще этого хотите (как вы знаете, когда использовать, а когда нет), вы можете использовать

Object.defineProperty(Object.prototype, "defineProperty", {
    writable: true,
    enumberable: false,
    value: function(prop, descr) {
        return Object.defineProperty(this, prop, descr); 
    }
});

391
задан Cœur 1 February 2019 в 07:00
поделиться

2 ответа

Просто укажите в словаре данный ключ и присвойте новое значение:

myDictionary[myKey] = myNewValue;
684
ответ дан 22 November 2019 в 23:30
поделиться

Это возможно при доступе к ключу как к индексу

, например:

Dictionary<string, int> dictionary = new Dictionary<string, int>();
dictionary["test"] = 1;
dictionary["test"] += 1;
Console.WriteLine (dictionary["test"]); // will print 2
186
ответ дан 22 November 2019 в 23:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: