patterncsharpCritical
Why is there no ForEach extension method on IEnumerable?
Viewed 0 times
extensionwhymethodienumerableforeachthere
Problem
Inspired by another question asking about the missing
Why is there no
Zip function:Why is there no
ForEach extension method on the IEnumerable interface? Or anywhere? The only class that gets a ForEach method is List<>. Is there a reason why it's missing, maybe performance?Solution
There is already a
I'd hate to see the following:
Instead of:
The latter is clearer and easier to read in most situations, although maybe a bit longer to type.
However, I must admit I changed my stance on that issue; a
Here are the major differences between the statement and the method:
Those are all great points made by many people here and I can see why people are missing the function. I wouldn't mind Microsoft adding a standard ForEach method in the next framework iteration.
foreach statement included in the language that does the job most of the time.I'd hate to see the following:
list.ForEach( item =>
{
item.DoSomething();
} );Instead of:
foreach(Item item in list)
{
item.DoSomething();
}The latter is clearer and easier to read in most situations, although maybe a bit longer to type.
However, I must admit I changed my stance on that issue; a
ForEach() extension method would indeed be useful in some situations.Here are the major differences between the statement and the method:
- Type checking: foreach is done at runtime,
ForEach()is at compile time (Big Plus!)
- The syntax to call a delegate is indeed much simpler: objects.ForEach(DoSomething);
- ForEach() could be chained: although evilness/usefulness of such a feature is open to discussion.
Those are all great points made by many people here and I can see why people are missing the function. I wouldn't mind Microsoft adding a standard ForEach method in the next framework iteration.
Code Snippets
list.ForEach( item =>
{
item.DoSomething();
} );foreach(Item item in list)
{
item.DoSomething();
}Context
Stack Overflow Q#101265, score: 236
Revisions (0)
No revisions yet.