我有一个方法:
IList<string> pages = new List<string>();
foreach (var node in nodes)
{
try
{
string temp = DoSomeComplicatedModificationOnNode(node);
if (temp.ToLower().Contains(path))
{
pages.Add(node.Title);
}
}
catch (Exception)
{
continue;
}
}
在某些情况下,DoSomeComplicatedModificationOnNode()会引发异常,因此使用try {} catch块 - 我可以跳过引发异常的项。节点数包含数千个项目,每个项目有几个属性。如何优化此循环?我考虑使用Parallel.Foreach,但以下代码给出了错误“缺少当前主体”:
IList<string> pages = new List<string>();
Parallel.ForEach(pageNodes, node =>
{
try
{
string temp = DoSomeComplicatedModificationOnNode(node);
if (temp.ToLower().Contains(path))
{
pages.Add(node.Title);
}
}
catch (Exception)
{
}
});
ToLowerInvariant
,而不是ToLower
。 - CodesInChaos