2011-01-26 46 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,看到同樣的結果。在調試通用選項下,你有沒有在變量窗口中顯示對象的原始結構?如果是這樣,不要挑戰它。

相關問題