Перебор словаря в C#

var dict = new Dictionary<int, string>();
for (int i = 0; i < 200000; i++)
    dict[i] = "test " + i;

я повторил этот словарь, используя код ниже:

foreach (var pair in dict)
    Console.WriteLine(pair.Value);

затем я повторил его, используя это:

foreach (var key in dict.Keys)
    Console.WriteLine(dict[key]);

и вторая итерация заняла ~3 секунды меньше. Я могу получить оба ключа и значения с помощью обоих методов. Интересно, есть ли у второго подхода недостаток? С самый рейтинговый вопрос что я могу найти об этом, не включает в себя этот способ итерации словаря, я хотел знать, почему никто не использует его и как он работает быстрее.

1 ответов


ваши тесты времени имеют некоторые фундаментальные недостатки: