通过httpcache c#进行循环

本文关键字:循环 httpcache 通过 | 更新日期: 2023-09-27 18:15:14

VB。我可以做这样的事情来写出缓存中的所有键:

Dim oc As HttpContext = HttpContext.Current
For Each c As Object In oc.Cache
    oc.Response.Write(c.Key.ToString())
Next

虽然。key在智能感知中没有出现,但代码工作得很好。

我如何在c#中做同样的事情?

HttpContext oc = HttpContext.Current;
foreach (object c in oc.Cache) 
{
    oc.Response.Write(c.key.ToString());
}

它不喜欢。键。一些。我有点不知所措。你知道怎么用这种方式访问密钥吗?

通过httpcache c#进行循环

几乎正确——它是大写的K,而不是小写的Key。c#是区分大小写的

另外,object没有Key成员。在c#中,你也可以通过var关键字使用隐式类型推断。如果底层推断类型具有Key成员,则此操作有效:

HttpContext oc = HttpContext.Current;
foreach (var c in oc.Cache) 
{
    oc.Response.Write(c.Key.ToString());
}

在本例中,Cache没有Key成员,因此需要更深入地挖掘,使用CacheGetEnumerator方法返回的IDictionaryEnumerator:

HttpContext oc = HttpContext.Current;
IDictionaryEnumerator en = oc.Cache.GetEnumerator();
while(en.MoveNext())
{
    oc.Response.Write(en.Key.ToString());
}

下面的代码snap工作正常:

HttpContext oc = HttpContext.Current;
foreach (var c in oc.Cache)        
{
   oc.Response.Write(((DictionaryEntry)c).Key.ToString());
}

感谢您的宝贵时间