在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。位。我在这里不知所措。有任何想法如何以这种方式访问密钥?
答案 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());
}
感谢您的时间