У меня есть быстрый вопрос. Есть ли путь к легкому циклу через System.Collections.Generic.Dictionary
через for
оператор в C#?
Заранее спасибо.
Не разумно, нет. Вы могли использовать расширение 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++;
}
Я не очень хорошо разбираюсь в 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- Нет, для
в основном для коллекций с индексами.
Однако можно легко предугадать
.
Получил его для
FOREACH
, хотя я обычно упрощаю его:
foreach (var pair in dictionary)
{
var key = pair.Key;
var value = pair.Value;
}
нет никаких способов петли через эту коллекцию пар клавиш, используя петлю для
, потому что они не хранится в порядке. Вы можете закрепить ключи или значения как коллекции, хотя.
Это может быть сделано, но это немного глупо ИМО
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++;
}
Есть несколько способов. Закручивание клавиш:
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
}
Если вы используете Net 3.5 или позже, вы можете использовать LINQ и предсказанный, чтобы найти определенное значение или значения. Словари не обязательно хранить свои пары ключевых панелей по порядку (либо по заказу входа, ни ключевой порядок).
Я не очень хорошо разбираюсь в 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] ...
или оба, как показывает Филипп
Вы можете использовать foreach:
Dictionary<string,string> dictionary = new Dictionary<string,string>();
// ...
foreach (KeyValuePair<string,string> kv in dictionary)
{
string key = kv.Key;
string value = kv.Value;
}