在ASP.Net中,在system.web.caching中存储int的最佳方法是什么?

时间:2012-01-27 01:45:22

标签: c# asp.net caching int32

目前,我必须将int转换为string并存储在缓存中,非常复杂

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

这是一种一次又一次没有改变类型的更快的方法吗?

2 个答案:

答案 0 :(得分:6)

您可以在缓存中存储任何类型的对象。方法签名是:

Cache.Insert(string, object)

所以,在插入之前不需要转换为字符串。但是,从缓存中检索时,您需要进行强制转换:

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

这会导致原始类型的装箱/拆箱惩罚,但每次都要比通过字符串少得多。

答案 1 :(得分:1)

您可以实现自己的方法来处理它,以便调用代码看起来更干净。

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" );