【发布时间】:2014-04-21 18:22:14
【问题描述】:
我正在尝试在 MemoryCache 对象中缓存昂贵函数的结果。
MemoryCache 需要一个字符串键,所以我想知道执行以下操作是否有效:
string key = Char.ConvertFromUtf32(myObject.GetHashCode());
if (!_resourceDescriptionCache.Contains(key))
{
_resourceDescriptionCache[key] = ExpensiveFunction(myObject);
}
return (string)_resourceDescriptionCache[key];
使用单个 UTF32 字符作为可能很大的缓存的键感觉很奇怪。
【问题讨论】:
-
我收到一个错误 UTF32 value must be between 0x000000 and 0x10ffff 所以我想我不能通过这种方式将 Int32 转换为 char。
-
并非每个 32 位值都代表一个有效的 UTF32 代码点。简单,不是最快但相当有效的方法是使用哈希码的十六进制表示。凭记忆,
myObject.GetHashCode().ToString("X")。 -
谢谢大家,非常有帮助的cmets
-
2 年后,我很尴尬我曾经问过这个问题。我们如何成长!
标签: c# caching hash memorycache