ObjectCache的"Set"和"Add"有什么区别?

Kra*_*raz 21 asp.net caching

来自doc

Add(CacheItem,CacheItemPolicy):在派生类中重写时,尝试将缓存条目作为CacheItem实例插入缓存中,并添加有关如何逐出该条目的详细信息.[1]

-

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

我看到措辞(尝试)和签名(set是一个sub,add返回一个布尔值)没有什么区别,但是我不确定我应该使用哪一个,以及两者之间是否真的有什么不同.

R.C*_*R.C 33

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

虽然该Set()方法将覆盖具有相同密钥的现有缓存条目.[但是,如果项目的密钥不存在,则插入将作为新的缓存条目完成].

以上是其功能方面的差异.

句法差异:

一个重要的语法差异是该Add()方法返回一个布尔值,true如果插入成功,或者false如果缓存中已经有一个与项目具有相同键的条目.该Set()方法具有void返回类型.

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

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

  • 一个有点模糊的方法完美简洁的答案.这就是为什么我爱你所以你可能节省了我一个小时或搜索或测试. (2认同)