C# 为什么列表<;T>;。.NETCore中缺少ForEach?

C# 为什么列表<;T>;。.NETCore中缺少ForEach?,c#,.net,windows-8,windows-store-apps,C#,.net,Windows 8,Windows Store Apps,我正在移植一些代码以使用Windows应用商店应用程序,并注意到,.NET核心框架(Windows应用商店应用程序引用的框架)中不包含List.ForEach方法 MSDN确认商店应用程序不支持它 我可以很容易地绕过缺少的方法,但在这一点上,我只是好奇它为什么会丢失 我可以很容易地绕过缺少的方法,但在这一点上,我只是好奇它为什么会丢失 我怀疑这被认为是不必要的膨胀,可以说,如果不从框架开始,情况会更好 事实上,从那篇博文底部的链接中,MSFT提供了以下答案: List.ForEach已在Metr

我正在移植一些代码以使用Windows应用商店应用程序,并注意到,.NET核心框架(Windows应用商店应用程序引用的框架)中不包含
List.ForEach
方法

MSDN确认商店应用程序不支持它

我可以很容易地绕过缺少的方法,但在这一点上,我只是好奇它为什么会丢失

我可以很容易地绕过缺少的方法,但在这一点上,我只是好奇它为什么会丢失

我怀疑这被认为是不必要的膨胀,可以说,如果不从框架开始,情况会更好

事实上,从那篇博文底部的链接中,MSFT提供了以下答案:

List.ForEach
已在Metro风格的应用程序中删除。虽然这个方法看起来很简单,但是当列表被传递给ForEach的方法改变时,它会有一些潜在的问题。相反,建议您只使用foreach循环


它似乎更多地与在回调中改变列表所带来的问题有关:@BoltClock:只是链接到同一个原始源。不过,我不确定我认为变异在
ForEach
中比
ForEach
中更为严重,因为在这两种情况下,它肯定会以同样的方式失败。不过,我同意它会增加不必要的膨胀。我从来没有真正明白这一点。也许原因是,如果您使用foreach,感觉不允许对集合进行变异,但在foreach回调中,开发人员可能不会有同样的感觉。
foo.thing?.foreach{…}
是应该包含它的主要原因
foreach(foo.thing中的var thing??new List())
非常痛苦,需要额外的不必要的列表分配,因此您最终必须在循环之外执行if检查。从技术上讲,它不是“扩展”,而是
List
类中的普通实例方法。可能重复