枚举System.Collections.Generic.Dictionary中的键<string,string> </string,string>

时间:2011-01-26 07:01:38

标签: c# asp.net silverlight dictionary

在调试时,我想看看我的InitParams集合中的键是什么 - 我似乎无法列出它们。

InitParam

编辑:

正如Jon在下面建议的那样,这可能是Silverlight调试器中的一个错误。要重现,只需在Visual Studio 2010中创建一个新的Silverlight应用程序 bug silverlight,只需编辑代码

{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
            var dictionary = new Dictionary<string, string> {{"A", "1"}, {"B", "2"}, {"C", "3"}};
        }
    }
}

2 个答案:

答案 0 :(得分:4)

假设您只需要密钥,请使用Keys属性:

foreach (string key in dict.Keys)
{
    ...
}

如果您想在即时窗口中以易于阅读的方式获取所有密钥,您可以使用:

string.Join(";", dict.Keys)

或pre-.NET 4:

string.Join(";", dict.Keys.ToArray())

...或者如果您使用的是.NET 2,可以这样:

string.Join(";", new List<string>(dict.Keys).ToArray())

如果您想同时获取值,可以根据Yaakov的答案迭代KeyValuePair条目。

编辑:说实话,我希望期望 Visual Studio默认为您的字典显示一个很好的代表。例如,这就是我在VS2008中看到的:

dictionary in Visual Studio

...我刚刚在VS2010中尝试了它并看到了相同的结果。在调试常规选项下,您是否勾选了“在变量窗口中显示对象的原始结构”?如果是这样,请取消它。

答案 1 :(得分:1)

编程方式:

foreach (KeyValuePair<string,string> param in InitParams) {
  Debug.Writeline(param.Key + ": " + param.Value);
}

在调试器中,深入了解InitParams&gt;值&gt;非公开会员&gt;字典。它应该最终出现。

在立即窗口中,尝试使用InitParams["abc"]之类的内容来显示第一个项目的值,其中&#34; abc&#34;是该集合中的已知密钥。如果您不知道集合中Keys的名称,那么使用上面的编程方法将所有值写入Debug窗口。