Resharper 访问修改后的闭包

Resharper Access to modified closure

即使我对逻辑使用 Assert 不会破坏代码,Resharpers 仍然警告我有关修改闭包的访问。

有没有办法将其更改为 Resharper 停止警告我或编写相同代码行的更好方法?

foreach 读取列表中的所有项目,最后一项除外。当离开一个循环到 foreach 结束时,它会中断。我的变量 countSubEscalaTakeWhile 计算它以退出最后一个元素中的循环。

foreach 不会更改或删除列表的元素。

var subEscalas = Browser.SafeFindElements(By.CssSelector(".subescala tbody tr")).ToList();
var countSubEscala = subEscalas.Count();
Assert.Greater(countSubEscala, 0);

foreach (var x in subEscalas.TakeWhile(x => countSubEscala != 1))
{
    countSubEscala--;

    var seletorExcluir = By.XPath(string.Format("//a[contains(@class,'excluir-subescala')]", countSubEscala - 1));
    Browser.ClickIn(seletorExcluir);
    Browser.Wait(200);
}

假设您正在寻找 "all items except the last" 只需要那么多项目就可以了:

foreach (var x in subEscalas.Take(subEscalas.Count() - 1))...

请注意,subEscalas.Count() - 1 将在开始时计算一次,这与当前代码为每个项目计算 re-evaluated 不同。