【发布时间】:2018-09-10 18:31:35
【问题描述】:
只是想知道在 foreach 循环中从集合中删除单个元素而不保存它以在循环外执行是否不安全/错误形式/只是看起来很脏。我知道如果你必须继续迭代,它可能会打破循环(在某些情况下,只是抛出一个错误),但在这种情况下你不需要再次迭代,因为当你找到你是什么时你正在使用一个 break 语句寻找。
例子:
List<string> strings = new List<string>() { "A", "B", "C" };
foreach(string s in strings)
{
if (s == "B")
{
strings.Remove("B");
break;
}
}
这很糟糕吗?我通常会将其编写为向后循环或将 stringToRemove 缓存在一个变量中(显然名称为 stringToRemove),但我只是想知道其他人对此有何感受。
【问题讨论】:
-
虽然这不会出错,但它仍然是代码异味
标签: c# collections syntax