C# - StringDictionary - как получить ключи и значения с помощью единственного цикла?

Необходимо создать канал (с CreatePipe () ), затем присоединить stdout к, он - конец записи с SetStdHandle () , затем можно читать из конца чтения канала с ReadFile () и поместить текст, который Вы получаете оттуда где угодно, Вам нравится.

21
задан nawfal 29 March 2013 в 05:59
поделиться

6 ответов

Вы можете выполнить цикл foreach в словаре, который будет давать вам DictionaryEntry на каждой итерации. Вы можете получить доступ к свойствам Key и Value из этого объекта.

foreach (DictionaryEntry value in KeyValue)
{
    // use value.Key and value.Value
}
37
ответ дан 29 November 2019 в 06:42
поделиться

Одного должно быть достаточно:

foreach (string key in KeyValue.Keys)
{
  string value = KeyValue[key];

  // Process key/value pair here
}

Или я неправильно понял ваш вопрос?

3
ответ дан 29 November 2019 в 06:42
поделиться
foreach(DictionaryEntry entry in KeyValue)
{
    // ...
}
1
ответ дан 29 November 2019 в 06:42
поделиться

Вы можете просто перечислить в самом словаре. Он должен возвращать последовательность экземпляров DictionaryEntry.

Лучшей альтернативой является использование Dictionary .

1
ответ дан 29 November 2019 в 06:42
поделиться

StringDictionary можно повторять как элементы DictionaryEntry :

foreach (DictionaryEntry item in KeyValue) {
   Console.WriteLine("{0} = {1}", item.Key, item.Value);
}

Я бы посоветовал вам использовать более свежий класс Dictionary вместо этого:

Dictionary<string, string> KeyValue = new Dictionary<string, string>();
KeyValue.Add("A", "Load");
KeyValue.Add("C", "Save");

foreach (KeyValuePair<string, string> item in KeyValue) {
   Console.WriteLine("{0} = {1}", item.Key, item.Value);
}
13
ответ дан 29 November 2019 в 06:42
поделиться

У вас уже есть много ответов. Но в зависимости от того, что вы хотите сделать, вы можете использовать LINQ.

Допустим, вы хотите получить список ярлыков, которые используют клавишу CTRL. Вы можете сделать что-то вроде:

var dict = new Dictionary<string, string>();
dict.Add("Ctrl+A", "Select all");
dict.Add("...", "...");

var ctrlShortcuts =
    dict
        .Where(x => x.Key.StartsWith("Ctrl+"))
        .ToDictionary(x => x.Key, x => x.Value);
3
ответ дан 29 November 2019 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: