原始foreach
循环中的增量不会影响数组的内容,这样做的唯一方法仍然是for
循环:
for(int i = 0; i < intArray.Length; ++i)
{
if(intArray[i] > 3) ++intArray[i];
}
Linq 不打算修改现有的集合或序列。它基于现有序列创建新序列。使用 Linq 实现上述代码是可能的,尽管它稍微违背了它的目的:
var newArray1 = from i in intArray select ((i > 3) ? (i + 1) : (i));
var newArray2 = intArray.Select(i => (i > 3) ? (i + 1) : (i));
如其他一些答案所示,使用where
(或等效)将从结果序列中排除任何小于或等于 3 的值。
var intArray = new int[] { 10, 1, 20, 2 };
var newArray = from i in intArray where i > 3 select i + 1;
// newArray == { 11, 21 }
数组上有一个ForEach
方法可以让你使用 lambda 函数而不是foreach
块,尽管除了方法调用之外我会坚持使用foreach
.
intArray.ForEach(i => DoSomething(i));