Resharper 访问修改后的闭包
Resharper Access to modified closure
即使我对逻辑使用 Assert
不会破坏代码,Resharpers 仍然警告我有关修改闭包的访问。
有没有办法将其更改为 Resharper 停止警告我或编写相同代码行的更好方法?
foreach 读取列表中的所有项目,最后一项除外。当离开一个循环到 foreach 结束时,它会中断。我的变量 countSubEscala
和 TakeWhile
计算它以退出最后一个元素中的循环。
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 不同。
即使我对逻辑使用 Assert
不会破坏代码,Resharpers 仍然警告我有关修改闭包的访问。
有没有办法将其更改为 Resharper 停止警告我或编写相同代码行的更好方法?
foreach 读取列表中的所有项目,最后一项除外。当离开一个循环到 foreach 结束时,它会中断。我的变量 countSubEscala
和 TakeWhile
计算它以退出最后一个元素中的循环。
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 不同。