Цикл через Систему. Наборы. Универсальный. Словарь через для оператора

У меня есть быстрый вопрос. Есть ли путь к легкому циклу через System.Collections.Generic.Dictionary через for оператор в C#?

Заранее спасибо.

6
задан iburlakov 20 January 2010 в 08:22
поделиться

8 ответов

Не разумно, нет. Вы могли использовать расширение LINQ :

for (int i = 0; i < dictionary.Keys.Count; i++)
{
    Console.WriteLine(dictionary.ElementAt(i).Value);                
}

... но я действительно не вижу такой точки. Просто используйте регулярный foreach подход. Если вам по какой-то причине необходимо отслеживать индекс, когда итерация, вы можете сделать это «на боку»:

int index = 0;
foreach (var item in dictionary)
{
    Console.WriteLine(string.Format("[{0}] - {1}", index, item.Value));

    // increment the index
    index++;
}
7
ответ дан 8 December 2019 в 12:20
поделиться

Я не очень хорошо разбираюсь в PHP регексы, но попробуйте это:

/(?<!\\);/
-121--4904122-

Вы можете использовать foreach:

Dictionary<string,string> dictionary = new Dictionary<string,string>();

// ...

foreach (KeyValuePair<string,string> kv in dictionary) 
{
    string key = kv.Key;
    string value = kv.Value;
}
-121--4144653-

Нет, для в основном для коллекций с индексами. Однако можно легко предугадать .

0
ответ дан 8 December 2019 в 12:20
поделиться

Получил его для FOREACH , хотя я обычно упрощаю его:

foreach (var pair in dictionary) 
{
    var key = pair.Key;
    var value = pair.Value;
}

нет никаких способов петли через эту коллекцию пар клавиш, используя петлю для , потому что они не хранится в порядке. Вы можете закрепить ключи или значения как коллекции, хотя.

0
ответ дан 8 December 2019 в 12:20
поделиться

Это может быть сделано, но это немного глупо ИМО

        Dictionary<string,string> dictionary = new Dictionary<string, string>();
        Dictionary<string, string>.Enumerator enumerator = dictionary.GetEnumerator();
        for (int i = 0; i < attributeValues.Count;i++ )
        {
            KeyValuePair<string, string> current = enumerator.Current;
            //do something usefull
            enumerator.MoveNext();
        }

, единственное, что набрало это (довольно бесполезный) индекс, и если это фактическая цель, вы Лучше служил что-то вроде этого:

        int currentIndex = 0;
        foreach (KeyValuePair<string, string> keyValuePair in dictionary)
        {
            //do something usefull
            currentIndex++;
        }
0
ответ дан 8 December 2019 в 12:20
поделиться

Есть несколько способов. Закручивание клавиш:

foreach(var key in myDictionary.Keys)

зацикливается через значения:

foreach(var value in myDic.Values)

зацикливается через пары:

foreach(KeyValuePair<K, V> p in myDic)
{  
     var key = p.Key;
     var value = p.Value
}
3
ответ дан 8 December 2019 в 12:20
поделиться

Если вы используете Net 3.5 или позже, вы можете использовать LINQ и предсказанный, чтобы найти определенное значение или значения. Словари не обязательно хранить свои пары ключевых панелей по порядку (либо по заказу входа, ни ключевой порядок).

0
ответ дан 8 December 2019 в 12:20
поделиться

Я не очень хорошо разбираюсь в PHP-регексах, но попробуйте:

/(?<!\\);/
-121--4904122-

Вы можете использовать foreach:

Dictionary<string,string> dictionary = new Dictionary<string,string>();

// ...

foreach (KeyValuePair<string,string> kv in dictionary) 
{
    string key = kv.Key;
    string value = kv.Value;
}
-121--4144653-

Вы можете закольцевать клавиши

 for(int i = 0; i < myDictionary.Keys.Length; ++i)
      myDictionary.Keys[i] ...

или значения

 for(int i = 0; i < myDictionary.Values.Length; ++i)
      myDictionary.Values[i] ...

или оба, как показывает Филипп

-1
ответ дан 8 December 2019 в 12:20
поделиться

Вы можете использовать foreach:

Dictionary<string,string> dictionary = new Dictionary<string,string>();

// ...

foreach (KeyValuePair<string,string> kv in dictionary) 
{
    string key = kv.Key;
    string value = kv.Value;
}
11
ответ дан 8 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

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