C #: Qualquer benefício de List <T> .ForEach (…) sobre o loop foreach normal?

Estou me perguntando por queList<T>.ForEach(Action<T>)&nbsp;existe.

Existe algum benefício / diferença em fazer:

elements.ForEach(delegate(Element element){ element.DoSomething(); });

sobre

foreach(Element element in elements) { element.DoSomething();}

?