Frage

Momentan muss ich umrechnen int Zu string und im Cache speichern, sehr komplex

int test = 123;
System.Web.HttpContext.Current.Cache.Insert("key", test.ToString()); // to save the cache
test = Int32.Parse(System.Web.HttpContext.Current.Cache.Get("key").ToString()); // to get the cache

Gibt es hier einen schnelleren Weg, ohne den Typ immer wieder zu ändern?

War es hilfreich?

Lösung

Sie können jede Art von Objekt im Cache speichern.Die Methodensignatur lautet:

Cache.Insert(string, object)

Sie müssen also vor dem Einfügen nicht in einen String konvertieren.Beim Abrufen aus dem Cache müssen Sie jedoch Folgendes umwandeln:

int test = 123;
HttpContext.Current.Cache.Insert("key", test); 
object cacheVal = HttpContext.Current.Cache.Get("key");
if(cacheVal != null)
{
    test = (int)cacheVal;
}

Bei primitiven Typen führt dies zu einer Strafe beim Boxen/Unboxen, die jedoch deutlich geringer ausfällt, als wenn jedes Mal über einen String gearbeitet wird.

Andere Tipps

Sie könnten Ihre eigene Methode implementieren, die das verarbeitet, damit der aufrufende Code sauberer aussieht.

public void InsertIntIntoCache( string key, int value )
{
   HttpContext.Current.Cache.Insert( key, value );
}

public int GetIntCacheValue( string key )
{
   return (int)HttpContext.Current.Cache[key];
}

int test = 123;
InsertIntIntoCache( "key", test );
test = GetIntCacheValue( "key" );
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top