【问题标题】:What is the difference between "Set" and "Add" for ObjectCache?ObjectCache 的“设置”和“添加”有什么区别?
【发布时间】:2013-12-13 13:33:42
【问题描述】:

来自doc

Add(CacheItem, CacheItemPolicy) :在派生类中重写时,尝试将缓存条目作为 CacheItem 实例插入缓存,并添加有关如何条目应该被驱逐。 [1]

-

Set(CacheItem, CacheItemPolicy) :在派生类中重写时,将缓存条目作为 CacheItem 实例插入缓存,指定有关如何驱逐条目的信息。 [2]

我发现措辞(尝试)和签名(set 是子,add 返回布尔值)几乎没有区别,但我不确定应该使用哪个如果两者之间真的有什么不同。

【问题讨论】:

    标签: asp.net caching


    【解决方案1】:

    主要区别在于Add() 方法尝试插入缓存而不用相同的键覆盖现有缓存条目。

    虽然Set() 方法将覆盖具有相同键的现有缓存条目。 [ 然而,如果一个项目的键不存在,插入将作为一个新的缓存条目完成]。

    以上是它们在功能上的区别。

    句法差异:

    一个显着的语法差异是Add() 方法返回一个布尔值,如果插入成功则为true,如果缓存中已经存在与项具有相同键的条目,则为falseSet() 方法有一个 void 返回类型。

    最后一点,Add() 方法的内部实现实际上调用了其对应版本的AddOrGetExisting() 方法。

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

    【讨论】:

    • 对一对有点晦涩的方法的完美简洁答案。这就是为什么我喜欢所以你可能为我节省了一个小时或搜索或测试。
    • 如果存在另一个具有相同键的缓存项,Add方法似乎不会创建缓存项!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2012-02-05
    • 2017-09-02
    相关资源
    最近更新 更多