【发布时间】:2015-04-17 21:48:54
【问题描述】:
基本上,我所做的是
for (var i = 0; i < someList.Count; i++){
if (someList[i] == x){
someList[i] = y;
}
}
我很确定这种操作应该只有一条线。有什么建议吗?
编辑: 在我的情况下,只有一个元素应该改变,这在主题中有所说明。 呈现的代码会更改所有实例,这就是我不喜欢的地方。这是一个开销,这就是我询问简化的原因。
关于数组/列表选择 - 让我们认为这就是关于列表(更改主题)。对于误导性信息,我们深表歉意。
【问题讨论】:
-
我不认为有一个单行的。
-
考虑到 x 和 y 不同,不能想到单线,而是双线:在循环中使用 Array.IndexOf...(检查 x 和 y 是否不同将再次需要第三行)
-
@deviantfan IndexOf 不会处理数组中有更多“y”-s 的情况。
-
您可以制作一个返回新的
IEnumerable<T>(someList.Select(i => i == x ? y : i)) 的单行程序,但我认为没有单行程序可以改变现有数组。 -
for-loop 就是为这样的事情而设计的。为什么要使用不同的东西?还有,如果是数组,为什么要用someList.Count?