2011-01-26 47 views
3

在调试时,我想看看我的InitParams集合中有什么键 - 我似乎无法列出它们。枚举System.Collections.Generic.Dictionary中的键<string,string>

InitParam

编辑:

正如乔恩以下建议,这可能是Silverlight的调试器中的错误。要重现,刚刚创建的Visual Studio 2010 bug silverlight,只是编辑代码

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

回答

1

编程方式中的一个新的Silverlight应用程序:

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

在调试程序,向下钻取到initParams在>值>非公共成员>字典。它应该最终显示出来。

在立即窗口中,尝试类似InitParams["abc"]的内容以显示第一项的值,其中“abc”是集合中的已知密钥。如果您不知道集合中的Keys的名称,请使用上面的编程方法将所有值写入Debug窗口。

+0

我想在调试器中这样做。立即窗口将是理想的 – bmanu 2011-01-26 07:04:02

+0

e.InitParams [0]返回这个: 'System.Collections.Generic.IDictionary .this [string]'的最佳重载方法匹配有一些无效的参数 – bmanu 2011-01-26 07:09:35

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()) 

如果你想在同一时间的值,可以在KeyValuePair项重复按亚科夫的答案。

编辑:我会有预计 Visual Studio默认显示您的字典的一个很好的代表,说实话。例如,这是我在VS2008看到:

dictionary in Visual Studio

...我只是试着它在VS2010,看到同样的结果。在调试通用选项下,你有没有在变量窗口中显示对象的原始结构?如果是这样,不要挑战它。

相关问题