Pregunta

Currently, I have to convert int to string and store in cache, very complex

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

Is here a faster way without change type again and again?

¿Fue útil?

Solución

You can store any kind of object in the cache. The method signature is:

Cache.Insert(string, object)

so, you don't need to convert to string before inserting. You will, however, need to cast when you retrieve from the cache:

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

This will incur a boxing/unboxing penalty with primitive types, but considerably less so than going via string each time.

Otros consejos

You could implement your own method that handles it so the calling code looks cleaner.

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" );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top