2013-12-12 50 views
17

docObjectCache的「Set」和「Add」有什麼區別?

添加(CacheItem,CacheItemPolicy):在派生類中重寫,嘗試插入緩存項到緩存爲CacheItem實例,並增加了有關如何進入細節應該被驅逐。 [1]

-

集(CacheItem,CacheItemPolicy):在派生類中重寫,插入緩存項到緩存爲CacheItem實例,指定有關條目怎麼會信息驅逐。 [2]

我看到的措辭差別不大(嘗試)和簽名(set是子,add返回一個布爾值),但我不知道我應該使用哪一個,如果真有兩者之間有些不同。

回答

24

主要區別在於Add()方法嘗試插入高速緩存而不覆蓋具有相同密鑰的現有高速緩存條目。

雖然Set()方法將覆蓋具有相同密鑰的現有緩存項。 [但是,如果項目的鍵不存在,插入將作爲新的緩存項目完成]。

以上是它們的功能差異。

語法差別:

一個顯著語法不同的是,Add()方法,如果已經存在具有相同的密鑰項目緩存條目返回一個布爾是true如果插入成功,或falseSet()方法有一個void返回類型。

最後一點,內部執行Add()方法實際調用其對應版本的AddOrGetExisting()方法。

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

完美的簡潔的答案在一些有點模糊的方法。這就是我喜歡的原因,因此你可能爲我節省了一個小時,或者搜索或測試。 –

+1

如果存在具有相同密鑰的另一個緩存項目,Add方法似乎不會創建緩存項目! – Sunil

相關問題