Почему в объекте Dictionary нет функции Update ()? - PullRequest
0 голосов
/ 28 августа 2018

Я использую объект Dictionary довольно часто, и мне всегда нужно добавлять / удалять / обновлять элементы.

Мне было интересно, почему нет встроенной функции Update() для словаря, даже в качестве расширения LINQ (с точки зрения безопасности потоков, блокировок и т. Д. Например, UpdateSafe() или аналогичных)

Объект ConcurrentDictionary имеет AddOrUpdate().

Примечание: я искал предыдущий пост SO, который объясняет концепцию, но не нашел.

Ответ или ссылка на пост, который объясняет концепцию, будет оценена.

1 Ответ

0 голосов
/ 28 августа 2018

Есть, вы можете использовать this[] аксессоры.

dict[key] = value;

Это добавит или заменит текущее значение для указанного ключа.

Основное отличие от ConcurrentDictionary состоит в том, что ConcurrentDictionary является поточно-ориентированным. Dictionary нет.

Команда CLR, вероятно, почувствовала необходимость создать метод с именем AddOrUpdate в ConcurrentDictionary, так как существует больше методов для добавления и обновления. В противном случае вы можете подумать, что нет никакого способа сделать это, но функционально это то же самое, что и аксессор this[].

...