Если вам нужна скорость, я бы посоветовал вам сделать следующее:
foreach (TKey key in yourDictionary.Keys)
action(key)
Это не требует создания делегата для любого метода, который вы используете как action
.
Обратите внимание, что это будет минимальным выигрышем в производительности, поскольку в случае, когда вы создаете делегат (как в двух ваших примерах), компилятор поднимает создание делегата из цикла и создает только один экземпляр делегата. , Тем не менее, я считаю foreach
чище и проще для чтения, чем любой метод расширения ForEach
.