通过httpcache循环c#

时间:2011-11-21 10:42:56

标签: c# asp.net vb.net-to-c#

在VB.NET上我可以做这样的事情来写出缓存中的所有密钥:

Dim oc As HttpContext = HttpContext.Current

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

尽管.Key没有出现在Intellisense中,但代码工作正常。

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

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

它不喜欢.key。位。我在这里不知所措。有任何想法如何以这种方式访问​​密钥?

2 个答案:

答案 0 :(得分:11)

几乎正确 - 它是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成员,因此您需要使用IDictionaryEnumerator GetEnumerator方法返回的Cache深入挖掘1}}:

HttpContext oc = HttpContext.Current;

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

答案 1 :(得分:9)

以下代码snap工作正常:

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

感谢您的时间