C# サンプル集 |
Visual Basic 中学校 > C# サンプル集 > C# サンプル集目次 >
foreach による繰り返し
2022/9/25
→ Visual Basic のサンプルに切り替える → Python のサンプルに切り替える
目次
Listの要素の繰り返し
var items = new List<string>() {"Apple", "Banana", "Cat", "Dog"};
//型推論により item は string型になります。
foreach(var item in items)
{
System.Diagnostics.Debug.WriteLine(item);
}
実行すると下記の通り出力されます。
Apple
Banana
Cat
Dog
Dictionaryの要素の繰り返し
var items = new Dictionary<string, string>()
{{"A", "Apple"}, {"B","Banana"}, {"C","Cat"}, {"D","Dog"}};
//型推論により item は KeyValuePair型になります。
foreach (var item in items)
{
System.Diagnostics.Debug.WriteLine($"{item.Key}={item.Value}");
}
実行すると下記の通り出力されます。
A=Apple
B=Banana
C=Cat
D=Dog
配列の要素の繰り返し
var items = new string[] {"Apple", "Banana", "Cat", "Dog"};
//型推論により item は string型になります。
foreach(var item in items)
{
System.Diagnostics.Debug.WriteLine(item);
}
実行すると下記の通り出力されます。
Apple
Banana
Cat
Dog
文字列内の文字を列挙する
string value = "🗿モアイ";
//型推論により letter は Rune型になります。
foreach(var letter in value.EnumerateRunes())
{
System.Diagnostics.Debug.WriteLine(letter);
}
実行すると下記の通り出力されます。
🗿
モ
ア
イ
C:\Windows にあるファイルを列挙
//型推論により fileName は string型になります。
foreach(var fileName in System.IO.Directory.EnumerateFiles(@"C:\Windows"))
{
System.Diagnostics.Debug.WriteLine(fileName);
}
C:\Windows にあるファイルとサイズを列挙
var winFolder = new System.IO.DirectoryInfo(@"C:\Windows");
//型推論により file は FileInfo型になります。
foreach(var file in winFolder.EnumerateFiles())
{
System.Diagnostics.Debug.WriteLine($"{file.Name} {file.Length / 1024:#,0} KB");
}
環境変数の列挙
//型推論だと env が Objectg型になり不便なので、自分で明示的に型を指定します。
foreach(DictionaryEntry env in Environment.GetEnvironmentVariables())
{
System.Diagnostics.Debug.WriteLine($"{env.Key} = {env.Value}");
}
繰り返し回数を取得する
var items = new List<string>() {"Apple", "Banana", "Cat", "Dog"};
int counter = 0;
//型推論により item は string型になります。
foreach(var item in items)
{
counter += 1;
System.Diagnostics.Debug.WriteLine($"{counter}個目 = {item}");
}
実行すると下記の通り出力されます。
1個目 = Apple
2個目 = Banana
3個目 = Cat
4個目 = Dog
途中でループから抜け出す (break)
この例は本来4回繰り返す指定になっていますが、if 文で条件判断して"Cat"の周で抜けます。
var items = new List<string>() {"Apple", "Banana", "Cat", "Dog"};
//型推論により item は string型になります。
foreach(var item in items)
{
System.Diagnostics.Debug.WriteLine(item);
if (item == "Cat")
{
break;
}
}
System.Diagnostics.Debug.WriteLine("終了");
実行すると下記の通り出力されます。
Apple
Banana
Cat
終了
ループがすべて完了したか確認する (たとえば、breakしていないかどうか)
この例では 変数 item が "Eagle" の場合 break します。ループの処理がすべて終わった後に break して終わったのか、break しないで終わったのかメッセージを出力します。 このまま実行すると item が "Eagle" になることはないので break は発生しないで終了します。
var items = new List<string>() {"Apple", "Banana", "Cat", "Dog"};
bool isBreak = false;
//型推論により item は string型になります。
foreach(var item in items)
{
System.Diagnostics.Debug.WriteLine(item);
if (item == "Eagle") //←ここを item == "Banana" などに変えると、最後のメッセージが出力されなくなります。
{
isBreak = true;
break;
}
}
if (!isBreak)
{
System.Diagnostics.Debug.WriteLine("breakしないでループを終了しました。"); //←これが出力されます。
}
メモ:ループが完了したかを検出する特別な機能はありません。
その周を中断し、次の周を開始する (continue)
if 文で条件判断して"Banana" と "Cat" であれば処理を中断して次の周を開始します。
var items = new List<string>() {"Apple", "Banana", "Cat", "Dog"};
//型推論により item は string型になります。
foreach(var item in items)
{
System.Diagnostics.Debug.WriteLine(item + " 開始");
if (item == "Banana" || item == "Cat")
{
continue;
}
System.Diagnostics.Debug.WriteLine(item + " 終了");
}
実行すると下記の通り出力されます。
Apple開始
Apple終了
Banana開始
Cat開始
Dog開始
Dog終了
2重ループで九九の表を作成する
foreach(int x in Enumerable.Range(1, 9))
{
foreach(int y in Enumerable.Range(1, 9))
{
System.Diagnostics.Debug.Write($"\t{x * y}");
}
System.Diagnostics.Debug.WriteLine("");
}
実行すると下記の通り出力されます。
列挙型を繰り返す
この例では DayOfWeek 列挙型 のメンバーを列挙します。
foreach (var value in Enum.GetValues<DayOfWeek>())
{
string name = Enum.GetName(value)!;
System.Diagnostics.Debug.WriteLine($"{(int)value}:{name}");
}
実行すると下記の通り出力されます。
0:Sunday
1:Monday
2:Tuesday
3:Wednesday
4:Thursday
5:Friday
6:Saturday
タプルの要素の繰り返し
var items = ("Apple", "Banana", "Cat", "Dog");
System.Runtime.CompilerServices.ITuple sugarTuple = items;
foreach(int index in Enumerable.Range(0, sugarTuple.Length))
{
System.Diagnostics.Debug.WriteLine(sugarTuple[index]);
}
メモ:タプルは繰り返されることを想定したオブジェクトではありません。
実行すると下記の通り出力されます。
Apple
Banana
Cat
Dog