gpt4 book ai didi

asp.net - 循环访问 ASP.NET 缓存对象中的键

转载 作者:行者123 更新时间:2023-12-02 16:42:00 24 4
gpt4 key购买 nike

ASP.NET 中的缓存看起来使用某种关联数组:

// Insert some data into the cache:
Cache.Insert("TestCache", someValue);
// Retrieve the data like normal:
someValue = Cache.Get("TestCache");

// But, can be done associatively ...
someValue = Cache["TestCache"];

// Also, null checks can be performed to see if cache exists yet:
if(Cache["TestCache"] == null) {
Cache.Insert(PerformComplicatedFunctionThatNeedsCaching());
}
someValue = Cache["TestCache"];

如您所见,对缓存对象执行 null 检查非常有用。

但是我想实现一个缓存清除功能,可以清除缓存值我不知道整个键名称。因为似乎有一个关联数组在这里,应该是可以的(?)

任何人都可以帮我找出一种循环存储的缓存键和对它们执行简单的逻辑?这就是我所追求的:

static void DeleteMatchingCacheKey(string keyName) {
// This foreach implementation doesn't work by the way ...
foreach(Cache as c) {
if(c.Key.Contains(keyName)) {
Cache.Remove(c);
}
}
}

最佳答案

从任何集合类型中删除项目时不要使用 foreach 循环 - foreach 循环依赖于使用枚举器,该枚举器不允许您从集合中删除项目(如果正在迭代的集合,枚举器将抛出异常上面已添加或删除了项目)。

使用简单的 while 来循环缓存键:

int i = 0;
while (i < Cache.Keys.Length){
if (Cache.Keys(i).Contains(keyName){
Cache.Remove(Cache.Keys(i))
}
else{
i ++;
}
}

关于asp.net - 循环访问 ASP.NET 缓存对象中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4302700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com