перечислять ключи в System.Collections.Generic.Dictionary - PullRequest
3 голосов
/ 26 января 2011

Во время отладки я хотел бы посмотреть, какие ключи есть в моей коллекции InitParams - я не могу перечислить их.

InitParam

EDIT:

Как предлагает Джон ниже, это может быть ошибка в отладчике Silverlight. Для воспроизведения просто создайте новое приложение 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"}};
        }
    }
}

Ответы [ 2 ]

4 голосов
/ 26 января 2011

Предполагая, что вам нужны только ключи, используйте свойство Keys:

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

Если вы хотите просто получить все ключи в удобном для чтения виде в ближайшем окне, вы можете использовать:

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

или до .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 и увидел тот же результат. В общих параметрах «Отладка» установлен ли флажок «Показывать необработанную структуру объектов в переменных окнах»? Если это так, снимите флажок.

1 голос
/ 26 января 2011

Программно:

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

В отладчике перейдите в InitParams> Значения> Непубличные члены> словарь.Это должно появиться в конце концов.

В окне Immediate, попробуйте что-то вроде InitParams["abc"], чтобы показать значение первого элемента, где «abc» - это известный ключ в коллекции.Если вы не знаете имен ключей в коллекции, используйте описанный выше программный метод для записи всех значений в окно отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...