2013-12-12 13 views
17

Vom docWas ist der Unterschied zwischen "Set" und "Add" für ObjectCache?

Add (CacheItem, CacheItemPolicy): Wenn in einer abgeleiteten Klasse überschrieben, versucht, als CacheItem Instanz einen Cache-Eintrag in den Cache einzufügen, und fügt Informationen darüber, wie der Eintrag sollte vertrieben werden. [1]

-

Set (CacheItem, CacheItemPolicy): Wenn in einer abgeleiteten Klasse überschrieben, fügt den Cache-Eintrag in den Cache als CacheItem Instanz, um Informationen angibt, wie der Eintrag wird vertrieben [2]

Ich sehe kaum einen Unterschied in der Formulierung (versucht,) und Unterschrift (set ist ein Teil, add gibt einen boolean), aber ich bin nicht sicher, welche soll ich verwenden und wenn es wirklich ist etwas anderes zwischen beiden.

Antwort

24

Der Hauptunterschied besteht darin, dass die Methode Add() versucht, einen Cache einzufügen, ohne einen vorhandenen Cache-Eintrag mit demselben Schlüssel zu überschreiben.

Während die Set() Methode überschreibt einen vorhandenen Cache-Eintrag mit dem gleichen Schlüssel. [Wenn jedoch der Schlüssel für ein Element nicht existiert, wird das Einfügen als neuer Cache-Eintrag durchgeführt].

Oben war der Unterschied in Bezug auf ihre Funktionalität.

syntaktische Unterschied:

Ein wesentlicher syntaktische Unterschied besteht darin, dass die Add() Methode ein Boolean zurückgibt, die true wenn Insertion ist es gelungen, oder false wenn es bereits einen Eintrag im Cache ist, die den gleichen Schlüssel wie Element hat . Die Set() Methode hat einen void Rückgabetyp.

Ein letzter Punkt, dass die interne Implementierung von Add() Methode tatsächlich die entsprechende Version von AddOrGetExisting() Methode ruft.

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

Perfekt kurze Antwort auf ein paar obskuren Methoden. Das ist der Grund, warum ich dich so liebe, dass du mir wahrscheinlich eine Stunde Zeit gespart hast oder gesucht oder getestet hast. –

+1

Es scheint, dass die Add-Methode kein Cache-Element erstellt, wenn ein anderes Cache-Element mit demselben Schlüssel existiert! – Sunil

Verwandte Themen