にforeachループを使用して2つの配列の値を比較するは、どのように私は、foreachループの中にループのためにこれを変換したいのC#
for(int i=0; i<arr.Length; i++)
{
if(arr[i]==arr[i+1]
{
// Do Something
}
}
にforeachループを使用して2つの配列の値を比較するは、どのように私は、foreachループの中にループのためにこれを変換したいのC#
for(int i=0; i<arr.Length; i++)
{
if(arr[i]==arr[i+1]
{
// Do Something
}
}
はい、あなたが行うことができ、コードのいくつかの余分な行を持ちます。しかし、問題のコードは壊れてしまいます。条件i<arr.Length
はi<arr.Length-1
に置き換えてください。 foreachループで動作するコードの下
は、あなたがあなたの配列は、少なくとも1を持っているかどうかを確認する必要があり、この
int index=0;
foreach (var item in arr)
{
index++;
if (item == arr[index])
Console.WriteLine("{0} = {1}", item, arr[index]);
if (index == arr.Count()-1) break;
}
'forer.'反復式の中で' arr.Skip(1) 'を使うと' isEntered'チェックを省略することができます。 – Greatran
(あなたの配列を仮定すると、整数の配列です)要素
var previousItem = arr[0];
foreach (var item in arr.Skip(1))
{
if (previousItem == item)
{
// Do Something
}
previousItem = item;
}
@AbhishekMaurya、それをやりましたか? – user3598756
@AbhishekMaurya、あなたを助けようとしている人々に感謝しています。 – user3598756
を試みることができる
int previousValue = arr[0];
bool isEntered = false;
foreach (int currentValue in arr)
{
if(isEntered)
{
if(previousValue == currentValue)
{
//do something
}
}
previousValue = currentValue;
isEntered = true;
}
なぜそれをしたいですか? – obe
foreachループでは、一度に1つのオブジェクトにしかアクセスできません。あなたのifステートメントは達成できません。 – FCin
これは、最後の反復で 'IndexOutOfRangeException'につながります。なぜなら' i + 1'は 'arr.Length'であり、範囲外です。 –