インクリメント配列の内容には影響しません、元foreach
ループは、これを行うための唯一の方法は、for
ループのまま:
for(int i = 0; i < intArray.Length; ++i)
{
if(intArray[i] > 3) ++intArray[i];
}
LINQのは、既存のコレクションや配列を修飾するものではありません。既存のシーケンスに基づいて新しいシーケンスを作成します。それは、その目的に対して僅かではあるが、それは、LINQのを使用して上記のコードを達成することが可能である:
where
(または同等)を使用
var newArray1 = from i in intArray select ((i > 3) ? (i + 1) : (i));
var newArray2 = intArray.Select(i => (i > 3) ? (i + 1) : (i));
、他の回答の一部に示されるように、任意の値以下を除外します得られた配列から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
に固執するでしょうが、あなたが、代わりにforeach
ブロックのラムダ関数を使用できるようになりますアレイ上ForEach
方法があります。
intArray.ForEach(i => DoSomething(i));