2012-01-27 8 views
2

現在、私はキャッシュにstringと店にintを変換する必要があり、非常に複雑なASP.Netでは、system.web.cachingにintを格納する最良の方法は何ですか?

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 

は、ここでは何度も何度も変化型なしのより高速な方法ですか?

答えて

5

任意の種類のオブジェクトをキャッシュに格納できます。メソッドシグネチャは次のとおりです。

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; 
} 

これは、プリミティブ型でボクシング/アンボクシングのペナルティを負うが、かなり少ないので、文字列を経由するたびに行くよります:あなたがキャッシュから取り出すときは、しかし、キャストする必要があります。

+0

'テストは=(int型)HttpContext.Current.Cache.Get( "キー");'エラーを与え、int' 'に'タイプSTRING'を変換できません、 'Parse'を使用すると、使用しなければなりません'Parse'では、最初に' .ToString() 'を使う必要があります。 –

+2

最初の場所にintを格納していないようです。 'typeof(HttpContext.Current.Cache.Get(" key "))とは何ですか?ToString()'? – spender

+0

あなたが正しい。しかし、私はこれを直接行うことはできないと思います。なぜならキャッシュは 'null'でしょうし、'(int)null'はエラー –

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"); 
関連する問題