В чем разница между "Set" и "Add" для ObjectCache?

Из doc

Добавить (CacheItem, CacheItemPolicy). При переопределении в производном классе пытается вставить запись кэша в кеш как экземпляр CacheItem и добавляет подробности о том, как должна быть выведена запись. [1]

-

Установить (CacheItem, CacheItemPolicy). При переопределении в производном классе вставляет элемент кэша в кеш как экземпляр CacheItem, указав информацию о том, как будет выведена запись. [2]

Я вижу небольшую разницу в формулировке (пытается) и подпись (set является sub, add возвращает логическое значение), но я не уверен, какой из них я должен использовать, и если есть действительно что-то другое между обоими.

Ответы

Ответ 1

Основное различие заключается в том, что метод Add() пытается вставить кеш без перезаписи существующей записи кэша с тем же ключом.

Пока метод Set() перезапишет существующую запись кэша с тем же ключом. [Однако Если ключ для элемента не существует, вставка будет выполняться как новая запись кэша].

Выше была разница в терминах их функциональности.

Синтаксическая разница:

Одна существенная синтаксическая разница заключается в том, что метод Add() возвращает логическое значение, которое является true, если вставка выполнена успешно, или false, если в кэше уже есть запись с тем же ключом, что и элемент. Метод Set() имеет возвращаемый тип void.

Последняя точка, в которой внутренняя реализация метода Add() фактически вызывает соответствующую версию AddOrGetExisting() метод.

 public virtual bool Add(CacheItem item, CacheItemPolicy policy)
{
    return this.AddOrGetExisting(item, policy) == null;
}