foreach文とは?
foreach文とは、for文のようにループする条件やインデックスの指定をせず、Listや配列の中身を全件文ループする場合に使用します。
foreach文の書き方
foreach(データ型 反復変数 in コレクション)
{
}
データ型はコレクションの中に含まれている型、またはvarを記述します。反復変数には、ループ処理のときのみ使用する変数名を記述します。コレクションはListや配列など、ループさせるコレクションを記述します。
for文との違い
for文はループ内でインデックスを指定するため、インデックスの境界外エラーが発生する可能性がありますが、foreach文はコレクションの間中ループし、ループ中のターゲットは反復変数に格納されるため、インデックスを指定する必要がないため、インデックスの指定を間違えるエラーが発生しません。コレクションを全件ループさせる場合は、for文よりforeachのほうが適しています。
注意点
foreachでループさせている間に、コレクションの値を変更するとエラーになります。foreach内で値を変更させることはできません。変更する場合はfor文を使用しましょう
サンプルコード
namespace CS14
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List items = new List();
items.Add(10);
items.Add(20);
items.Add(30);
items.Add(40);
foreach (var item in items)
{
MessageBox.Show(item.ToString());
}
}
private void button3_Click(object sender, EventArgs e)
{
List items = new List();
items.Add(10);
items.Add(10);
items.Add(30);
items.Add(40);
//この記述はバグっています。
//リスト内を削除する場合はbutton4_Clickの逆回しで削除してください
for (int i = 0; i < items.Count; i++)
{
if(items[i] == 10)
{
items.RemoveAt(i);
}
}
}
private void button4_Click(object sender, EventArgs e)
{
List items = new List();
items.Add(10);
items.Add(10);
items.Add(30);
items.Add(40);
items.Add(10);
items.Add(10);
for (int i = items.Count - 1; i >= 0; i--)
{
if (items[i] == 10)
{
items.RemoveAt(i);
}
}
}
}
}
for文でコレクションの中身を削除する場合は注意が必要です。button3_Click順回しでループしながら削除すると、途中でインデックスがずれでバグが生じます。button4_Click のように逆回しでループさせて削除することで、インデックスのずれが生じません。
- C#初心者のための基礎!C#文法2割の知識で8割の仕事をする方法!#1
- C#初心者のための基礎!ブロックと名前空間とクラスとメソッドを解説#2
- C#初心者のための基礎!#3値の扱い方。変数と定数をわかりやすく解説!
- C#初心者のための基礎!データ型の種類と使い分けをわかりやすく解説#4
- C#初心者のための基礎!値型と参照型の違いと使い方をわかりやすく解説#5
- C#初心者のための基礎!データ型の変換のやり方をわかりやすく解説#6
- C#初心者のための基礎!配列の使い方をわかりやすく解説#7
- C#初心者のための基礎!動的配列List<T>の使い方をわかりやすく解説#8
- C#初心者のための基礎!演算子の使い方をわかりやすく解説#9
- C#初心者のための基礎!if文とswich文の使い方をわかりやすく解説#10
- C#初心者のための基礎!while文の書き方と使い方をわかりやすく解説#11
- C#初心者のための基礎!do-While文の書き方と使い方をわかりやすく解説#12
- C#初心者のための基礎!for文の書き方と使い方をわかりやすく解説#13
- C#初心者のための基礎!foreach文の書き方と使い方をわかりやすく解説#14
- C#初心者のための基礎!オブジェクト指向の意味をわかりやすく解説#15
- C#初心者のための基礎!クラスの意味と使い方をわかりやすく解説#16
- C#初心者のための基礎!コンストラクタの意味と使い方をわかりやすく解説#17
- C#初心者のための基礎!アクセス修飾子の意味と使い方をわかりやすく解説#18
- C#初心者のための基礎!メソッドの意味と使い方をわかりやすく解説#19
- C#初心者のための基礎!フィールドの意味と使い方をわかりやすく解説#20
- C#初心者のための基礎!インスタンスの意味と使い方をわかりやすく解説#21
- C#初心者のための基礎!カプセル化の意味と使い方をわかりやすく解説#22
- C#初心者のための基礎!プロパティの意味と使い方をわかりやすく解説#23
- C#初心者のための基礎!Disposeとusingの意味と使い方を解説#24
- C#初心者のための基礎!staticスタティックの意味と使い方を解説#25
- C#初心者のための基礎!継承の意味と使い方をわかりやすく解説#26
- C#初心者のための基礎!override(オーバーライド)の使い方を解説#27
- C#初心者のための基礎!ポリモーフィズムとインタフェースの使い方を解説#28
- C#初心者のための基礎!ポリモーフィズムと抽象クラスの使い方を解説#29
- C#初心者のための基礎!例外Exceptionの意味と使い方をわかりやすく解説#30
