Может ли кто-нибудь помочь мне понять, почему вывод двух for loops
ниже производит разные выходы?Несоответствия между выводом словаря <int, string> и Queue <KeyValuePair <int, string>> in C#
Они, на мой взгляд такие же, однако оригинального Dictionary
объекта for loop
выводит все 9 своих членов, но и Queue
объекты for loop
выводит только первые 5.
void test()
{
Dictionary<int, string> d = new Dictionary<int, string>();
d.Add(0, "http://example.com/1.html");
d.Add(1, "http://example.com/2.html");
d.Add(2, "http://example.com/3.html");
d.Add(3, "http://example.com/4.html");
d.Add(4, "http://example.com/5.html");
d.Add(5, "http://example.com/6.html");
d.Add(6, "http://example.com/7.html");
d.Add(7, "http://example.com/8.html");
d.Add(8, "http://example.com/9.html");
Queue<KeyValuePair<int, string>> requestQueue = new Queue<KeyValuePair<int, string>>();
// build queue
foreach (KeyValuePair<int, string> dictionaryListItem in d)
{
requestQueue.Enqueue(dictionaryListItem);
Console.WriteLine(dictionaryListItem.Value);
}
Console.WriteLine(" ");
for (int i = 0; i < requestQueue.Count; i++)
{
Console.WriteLine(requestQueue.Peek().Value);
requestQueue.Dequeue();
}
}
точка сверху. Благодарю. зачем это нужно? думал бы requestQueue.Count проведет правильный val? –
@RodgersandHammertime: он сохраняет правильное значение. Повторите мой ответ. Вы понимаете, что 'Dequeue' удаляет элемент из очереди? –
Спасибо, понимаете сейчас :) –