public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (var element in source) action(element);
return source;
}
Le code ci-dessus me donne un avertissement que la source est potentiellement itérée plusieurs fois, mais est-ce vraiment? Il est répété une fois dans l'instruction foreach, mais comment l'instruction return l'a-t-elle réitérée?Y a-t-il vraiment plusieurs itérations d'un IEnumerable dans ce code?
Eh bien dans un certain sens, parce que vous le renvoyez à l'appelant et ce que l'appelant peut faire avec 'IEnumerable'? Seulement l'énumérer à nouveau. Comme dans myList.ForEach (c => DoStuff (c)). ToArray() '
Evk
Est-il possible d'avoir une exécution différée sur des élémenents dans un énumérable? – Mardoxx