C#のwhile文とdo while文のサンプルです。条件で処理の繰り返しを制御します。
目次
while文 | while文とは / while文のサンプル |
ループを抜ける(break) / 二重ループを抜ける | |
ループの先頭に戻る(continue) | |
do...while文 | do...while文とは / do...while文のサンプル |
ループを抜ける(break) / 二重ループを抜ける | |
ループの先頭に戻る(continue) | |
演算子 | 関係演算子と等値演算子 |
while文とは
while (条件式) { 処理 } |
- 条件がtrueの間、処理を繰り返します。
- 条件式がfalseの場合、処理を終了します。
- 最初の判定がfalseの場合、処理は1回も実行されません。
- 処理に条件式をfalseにするロジックがないと無限ループになるので注意が必要です。
while文のサンプル
using System;
class Test1
{
static void Main()
{
int i = 0;
while (i < 5)
{
Console.WriteLine(i); //0,1,2,3,4が出力される
i++;
}
}
}
8行目は、値が5より小さい間、処理を繰り返します。
11行目は、条件になる値を加算しています。
while文 ループを抜ける(break)
using System;
class Test1
{
static void Main()
{
int i = 0;
while (true)
{
if (i == 3)
{
break;
}
Console.WriteLine(i); //0,1,2が出力される
i++;
}
}
}
12行目のbreakは、while文を抜けます。
8行目は、条件をtrueにしています。このサンプルでは12行目のbreakがないと無限ループになるので注意して下さい。
二重ループを抜ける
using System;
class Test1
{
static void Main()
{
int i = 0;
Boolean outFlg = false;
while (true)
{
while (true)
{
if (i == 3)
{
outFlg = true;
break;
}
Console.WriteLine(i); //0,1,2が出力される
i++;
}
if (outFlg == true)
{
break;
}
}
}
}
8,10行目にwhileがある2重ループです。
15行目のbreakは内側のwhile文(10行目)のみ抜けます。
外側のwhile文(8行目)を抜けるために14行目でフラグを使用し22行目のbreakで外側のwhile文を抜けています。
while文 ループの先頭に戻る(continue)
using System;
class Test1
{
static void Main()
{
int i = 0;
while (i < 5)
{
if (i == 3)
{
i++;
continue;
}
Console.WriteLine(i); //0,1,2,4が出力される
i++;
}
}
}
13行目のcontinueは、次は8行目を実行します。そのため15行目は実行されません。
このサンプルでは12行目の加算がないと無限ループになるので注意して下さい。
do...while文とは
do { 処理 } while (条件式); |
- 条件がtrueの間、処理を繰り返します。
- 条件式がfalseの場合、処理を終了します。
- 必ず1回は処理が実行されます。
- 処理に条件式をfalseにするロジックがないと無限ループになるので注意が必要です。
do...while文のサンプル
using System;
class Test1
{
static void Main()
{
int i = 0;
do
{
Console.WriteLine(i); //0,1,2,3,4が出力される
i++;
}
while (i < 5);
}
}
13行目は、値が5より小さい間、処理を繰り返します。
do...while文 ループを抜ける(break)
using System;
class Test1
{
static void Main()
{
int i = 0;
do
{
if (i == 3)
{
break;
}
Console.WriteLine(i); //0,1,2が出力される
i++;
}
while (true);
}
}
12行目のbreakは、do...while文を抜けます。
17行目は、条件をtrueにしています。このサンプルでは12行目のbreakがないと無限ループになるので注意して下さい。
二重ループを抜ける
using System;
class Test1
{
static void Main()
{
int i = 0;
do
{
bool outFlg = false;
do
{
if (i == 3)
{
outFlg = true;
break;
}
Console.WriteLine(i); //0,1,2が出力される
i++;
}
while (true);
if (outFlg == true)
{
break;
}
} while (true);
}
}
7,10行目にdoがある2重ループです。
15行目のbreakは内側のdo while文(10行目)のみ抜けます。
外側のdo while文(7行目)を抜けるために14行目でフラグを使用し23行目のbreakで外側のdo while文を抜けています。
do...while文 ループの先頭に戻る(continue)
using System;
class Test1
{
static void Main()
{
int i = 0;
do
{
if (i == 3)
{
i++;
continue;
}
Console.WriteLine(i); //0,1,2,4が出力される
i++;
}
while (i < 5);
}
}
13行目のcontinueは、次は18行目を実行します。そのため15行目は実行されません。
このサンプルでは12行目の加算がないと無限ループになるので注意して下さい。
関係演算子と等値演算子
C#の関係演算子と等値演算子です。
関係演算子 | 説明 |
---|---|
a > b | aはbより大きい |
a >= b | aはbより大きい または 等しい |
a < b | aはbより小さい |
a <= b | aはbより小さい または 等しい |
等値演算子 | 説明 |
---|---|
a == b | aとbの値は等しい |
a != b | aとbの値は等しくない |
以下は、MicrosoftのC# 演算子の関係演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/#relational-and-type-testing-operators
以下は、MicrosoftのC# 演算子の等値演算子のリンクです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/#equality-operators
関連の記事