我試圖在一個MemoryCache對象中緩存一個昂貴函數的結果。使用對象散列代碼作爲內存緩存鍵是否有意義?
的的MemoryCache需要一個密鑰是一個字符串,所以我想知道,如果它是有效的做到以下幾點:
string key = Char.ConvertFromUtf32(myObject.GetHashCode());
if (!_resourceDescriptionCache.Contains(key))
{
_resourceDescriptionCache[key] = ExpensiveFunction(myObject);
}
return (string)_resourceDescriptionCache[key];
它使用一個UTF32字符作爲一個潛在的大緩存鍵的感覺奇。
我得到一個錯誤UTF32值必須是0x000000處,並在0x10FFFF之間,所以我想我不能這樣只是轉換一個Int32爲char。 – Alain
並非每個32位值都代表有效的UTF32代碼點。簡單,不是最快但體面有效的將是使用散列碼的十六進制表示。從內存中,'myObject.GetHashCode()。ToString(「X」)'。 –
謝謝大家,非常有幫助的意見 – Alain