您好,
要检查密钥是否已存在于缓存中,我应该能够执行以下操作:
if(Cache["MyKey"] != null)
然而这不起作用?如果我从Cache类创建一个实例,我将能够以这种方式获取对象:
cache.Get("MyKey") or cache["MyKey"]
但即使我像这样检查null:
if(cache["MyKey"] != null)
会抛出NullRefException吗?
我做错了什么?
编辑1:
这是我实现缓存的方式
private Cache cache
{
get {
if (_cache == null)
_cache = new Cache();
return _cache; }
}
答案 0 :(得分:28)
检查空值是如何测试某个键的对象是否在Cache中。因此,
if(Cache["MyKey"] != null)
是对的。
但是,您不应该实例化新的Cache对象。您可以改用System.Web.HttpContext.Current.Cache
。这是Cache的实例,位于应用程序域中。
来自MSDN:
创建了此类的一个实例 每个应用领域,它仍然存在 只要申请有效 域保持活跃。信息 关于这个类的一个实例是 可通过Cache属性获得 HttpContext对象或Cache Page对象的属性。
答案 1 :(得分:0)
你应该检查缓存是否不是Null&检查密钥是否存在的帖子(使用.Contains方法)。
if (myCache != null && myCache.Contains("keyName") && myCache.Get("keyName") != null)
{
myDS = (DataSet)myCache.Get("keyName");
}