C#のdo while文とは?whileとの違い・書き方・無限ループ対策まで初心者向けに解説

はじめに

C#で同じ処理を何度も繰り返したいときに使うのが、繰り返し文です。代表的な繰り返し文には、for文、while文、そしてdo while文があります。

その中でもdo while文は、「条件を判定する前に、まず1回処理を実行する」という特徴を持った繰り返し文です。

C#を学び始めたばかりの方にとって、while文とdo while文の違いは少しわかりにくいかもしれません。どちらも条件によって繰り返し処理を行う構文ですが、条件を確認するタイミングが異なります。

この記事では、C#のdo while文について、基本構文、処理の流れ、while文との違い、実用的なサンプルコード、無限ループ対策まで初心者向けにわかりやすく解説します。

1. C#のdo while文とは?

1-1. do while文の基本的な役割

C#のdo while文は、指定した条件が成り立っている間、同じ処理を繰り返し実行するための構文です。

たとえば、次のような処理に使えます。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count <= 5);

このコードでは、countの値を表示しながら、countが5以下である間、処理を繰り返します。

実行結果は次のようになります。

1
2
3
4
5

do while文は、条件を満たしている間だけ繰り返すという点ではwhile文と似ています。しかし、do while文には大きな特徴があります。

1-2. do while文は「最低1回は処理を実行する」繰り返し文

do while文の最大の特徴は、条件式の判定よりも先に処理を実行することです。

つまり、条件が最初からfalseであっても、doブロック内の処理は必ず1回実行されます。

C#
int number = 10;

do
{
Console.WriteLine("処理を実行しました");
}
while (number < 5);

このコードでは、number < 5は最初からfalseです。

しかし、実行結果は次のようになります。

処理を実行しました

条件がfalseでも1回は処理されるため、ユーザー入力やメニュー表示のように「最初に必ず表示・実行したい処理」がある場合に便利です。

1-3. do while文が使われる代表的な場面

do while文は、次のような場面でよく使われます。

ユーザーに入力を求め、正しい値が入力されるまで繰り返す処理。

C#
string input;

do
{
Console.Write("yes または no を入力してください: ");
input = Console.ReadLine();
}
while (input != "yes" && input != "no");

メニューを表示し、ユーザーが終了を選ぶまで繰り返す処理。

C#
int menu;

do
{
Console.WriteLine("1: 開始");
Console.WriteLine("2: 設定");
Console.WriteLine("0: 終了");
menu = int.Parse(Console.ReadLine());
}
while (menu != 0);

このように、do while文は「まず1回処理を実行してから、続けるかどうかを判断したい」場面で役立ちます。

2. C#のdo while文の基本構文と書き方

2-1. do while文の構文

C#のdo while文は、次のように書きます。

C#
do
{
// 繰り返したい処理
}
while (条件式);

doの後に繰り返したい処理を書き、最後にwhileで条件式を指定します。

条件式がtrueの場合は、再びdoブロックの先頭に戻って処理を繰り返します。条件式がfalseになると、do while文の処理を終了します。

2-2. doブロックとwhile条件式の意味

doブロックには、繰り返し実行したい処理を書きます。

C#
do
{
Console.WriteLine("こんにちは");
}
while (条件式);

一方、whileの後に書く条件式は、繰り返しを続けるかどうかを判断するための式です。

C#
while (count <= 5);

この場合、count <= 5trueである間は繰り返しが続きます。countが6になると条件式がfalseになり、ループを終了します。

2-3. 文末のセミコロンを忘れやすいので注意

C#のdo while文では、最後のwhile (条件式)の後にセミコロン;が必要です。

C#
do
{
Console.WriteLine("処理中");
}
while (true);

次のようにセミコロンを忘れると、コンパイルエラーになります。

C#
do
{
Console.WriteLine("処理中");
}
while (true)

if文や通常のwhile文では条件式の後にセミコロンを書かないため、初心者が間違えやすいポイントです。

do while文では、最後に;を書くと覚えておきましょう。

2-4. do while文の基本サンプルコード

次のコードは、1から3までの数字を表示する基本的なdo while文の例です。

C#
int i = 1;

do
{
Console.WriteLine(i);
i++;
}
while (i <= 3);

実行結果は次のとおりです。

1
2
3

処理の流れは次のようになります。

最初にiは1です。

Console.WriteLine(i);で1を表示します。

i++iを2にします。

i <= 3を判定します。2は3以下なので、もう一度繰り返します。

この流れを繰り返し、iが4になると条件式i <= 3falseになり、ループを終了します。

3. do while文の処理の流れ

3-1. do while文が実行される順番

do while文は、次の順番で処理されます。

  1. doブロック内の処理を実行する

  2. whileの条件式を判定する

  3. 条件式がtrueなら、もう一度doブロックを実行する

  4. 条件式がfalseなら、ループを終了する

ポイントは、条件式の判定が後で行われることです。

通常のwhile文では、最初に条件式を判定します。しかしdo while文では、最初に処理を実行し、その後で条件を確認します。

3-2. 条件がtrueの場合の動き

条件式がtrueの場合、do while文は繰り返しを続けます。

C#
int count = 1;

do
{
Console.WriteLine("count = " + count);
count++;
}
while (count <= 3);

実行結果は次のようになります。

count = 1
count = 2
count = 3

countが1、2、3の間は、条件式count <= 3trueです。

そのため、doブロックの処理が繰り返されます。

3-3. 条件がfalseの場合の動き

条件式がfalseになった時点で、do while文は終了します。

C#
int count = 4;

do
{
Console.WriteLine("count = " + count);
count++;
}
while (count <= 3);

この場合、countは最初から4です。

count <= 3falseですが、do while文では先に処理が実行されるため、実行結果は次のようになります。

count = 4

1回実行された後、条件式を判定し、falseなのでループを終了します。

3-4. フローチャートで理解するdo while文

do while文の流れを文章で表すと、次のようになります。

開始

doブロックの処理を実行

条件式を判定

trueの場合 → doブロックに戻る

falseの場合 → ループ終了

do while文は、処理を先に実行してから条件を確認するため、フローチャートでも「処理」が先、「条件判定」が後になります。

この特徴を理解しておくと、while文との違いもわかりやすくなります。

4. C#のwhile文との違い

4-1. while文とは?

C#のwhile文も、条件がtrueである間、処理を繰り返す構文です。

基本構文は次のとおりです。

C#
while (条件式)
{
// 繰り返したい処理
}

たとえば、1から3まで表示する場合は次のように書けます。

C#
int i = 1;

while (i <= 3)
{
Console.WriteLine(i);
i++;
}

実行結果は次のようになります。

1
2
3

この例だけを見ると、do while文と同じように見えます。

しかし、while文とdo while文では、条件式を判定するタイミングが異なります。

4-2. do while文とwhile文の最大の違い

do while文とwhile文の最大の違いは、処理が最低1回実行されるかどうかです。

while文は、最初に条件式を判定します。

そのため、条件式が最初からfalseの場合、処理は1回も実行されません。

一方、do while文は、最初に処理を実行します。

そのため、条件式が最初からfalseでも、処理は必ず1回実行されます。

while文      : 条件判定 → 処理
do while文 : 処理 → 条件判定

この違いが、使い分けの重要なポイントです。

4-3. 条件判定のタイミングの違い

while文は、ループに入る前に条件を確認します。

C#
int number = 10;

while (number < 5)
{
Console.WriteLine("while文の処理");
}

このコードでは、number < 5が最初からfalseです。そのため、何も表示されません。

一方、do while文では次のようになります。

C#
int number = 10;

do
{
Console.WriteLine("do while文の処理");
}
while (number < 5);

実行結果は次のとおりです。

do while文の処理

条件がfalseでも、先にdoブロックが実行されるためです。

4-4. 実行回数が変わる具体例

次の例で、while文とdo while文の実行回数の違いを確認しましょう。

まずはwhile文です。

C#
int count = 5;

while (count < 3)
{
Console.WriteLine(count);
count++;
}

count < 3は最初からfalseなので、何も表示されません。

次にdo while文です。

C#
int count = 5;

do
{
Console.WriteLine(count);
count++;
}
while (count < 3);

実行結果は次のようになります。

5

このように、同じ条件式でも、while文では0回、do while文では1回実行されることがあります。

4-5. do while文とwhile文の使い分け

do while文は、最初に必ず処理を実行したい場合に向いています。

たとえば、次のような処理です。

ユーザーに入力してもらう
メニューを表示する
再試行するか確認する
ゲームのターンを最低1回実行する

一方、while文は、条件を満たしている場合だけ処理を実行したいときに向いています。

データが存在する間だけ処理する
条件を満たす間だけ監視する
最初から実行しない可能性がある処理を書く

迷った場合は、「その処理は最低1回実行する必要があるか?」を考えると判断しやすくなります。

最低1回必要ならdo while文、必要ないならwhile文を使うとよいでしょう。

5. do while文の実用的なサンプルコード

5-1. カウントアップ処理の例

まずは、もっとも基本的なカウントアップ処理です。

C#
int count = 1;

do
{
Console.WriteLine("現在の値: " + count);
count++;
}
while (count <= 5);

実行結果は次のようになります。

現在の値: 1
現在の値: 2
現在の値: 3
現在の値: 4
現在の値: 5

このコードでは、countを1から始め、表示するたびにcount++で1ずつ増やしています。

countが6になると、条件式count <= 5falseになり、ループが終了します。

5-2. ユーザー入力を繰り返す例

do while文は、ユーザー入力を繰り返す処理と相性がよいです。

次の例では、ユーザーがexitと入力するまで入力を受け付けます。

C#
string input;

do
{
Console.Write("文字を入力してください。終了するには exit と入力: ");
input = Console.ReadLine();

Console.WriteLine("入力された文字: " + input);
}
while (input != "exit");

このコードでは、最初に必ず入力を求めます。

その後、入力された文字がexitでなければ、もう一度入力処理を繰り返します。

ユーザーに最低1回は入力してもらいたい場合、do while文は自然な書き方になります。

5-3. メニュー処理を繰り返す例

コンソールアプリでは、メニューを表示してユーザーに選択してもらう処理がよくあります。

C#
int choice;

do
{
Console.WriteLine("=== メニュー ===");
Console.WriteLine("1: 新規作成");
Console.WriteLine("2: 編集");
Console.WriteLine("3: 削除");
Console.WriteLine("0: 終了");
Console.Write("番号を選択してください: ");

choice = int.Parse(Console.ReadLine());

if (choice == 1)
{
Console.WriteLine("新規作成を選択しました");
}
else if (choice == 2)
{
Console.WriteLine("編集を選択しました");
}
else if (choice == 3)
{
Console.WriteLine("削除を選択しました");
}
else if (choice == 0)
{
Console.WriteLine("終了します");
}
else
{
Console.WriteLine("正しい番号を選択してください");
}
}
while (choice != 0);

このコードでは、ユーザーが0を入力するまでメニューを繰り返し表示します。

メニューは最初に必ず表示する必要があるため、do while文が適しています。

5-4. 条件を満たすまで再入力させる例

次の例では、1から10までの数値が入力されるまで、再入力を求めます。

C#
int number;

do
{
Console.Write("1から10までの数値を入力してください: ");
number = int.Parse(Console.ReadLine());

if (number < 1 || number > 10)
{
Console.WriteLine("入力値が範囲外です。");
}
}
while (number < 1 || number > 10);

Console.WriteLine("入力された数値は " + number + " です。");

実行例は次のようになります。

1から10までの数値を入力してください: 15
入力値が範囲外です。
1から10までの数値を入力してください: 8
入力された数値は 8 です。

このように、ユーザーが正しい値を入力するまで繰り返したい場合にも、do while文は便利です。

ただし、int.Parseは数値以外が入力されると例外が発生します。実務では、int.TryParseを使うとより安全です。

C#
int number;
bool isValid;

do
{
Console.Write("1から10までの数値を入力してください: ");
string input = Console.ReadLine();

isValid = int.TryParse(input, out number) && number >= 1 && number <= 10;

if (!isValid)
{
Console.WriteLine("1から10までの数値を入力してください。");
}
}
while (!isValid);

Console.WriteLine("入力された数値は " + number + " です。");

6. do while文でよくあるエラーと注意点

6-1. 条件式の書き方を間違える

do while文では、条件式がtrueの間、処理が繰り返されます。

そのため、「終了条件」と「継続条件」を混同すると、意図しない動きになることがあります。

たとえば、countが5になるまで繰り返したい場合、次のように書くのが自然です。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count <= 5);

一方、条件を間違えると、思った回数だけ実行されないことがあります。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count >= 5);

この場合、最初の処理は実行されますが、count >= 5falseなので1回で終了します。

条件式は「繰り返しを続ける条件」であることを意識しましょう。

6-2. 変数の更新を忘れる

do while文でよくあるミスが、ループ内で変数を更新し忘れることです。

C#
int count = 1;

do
{
Console.WriteLine(count);
}
while (count <= 5);

このコードでは、countの値がずっと1のままです。

そのため、条件式count <= 5が常にtrueになり、無限ループが発生します。

正しくは、ループ内でcount++のように値を更新します。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count <= 5);

繰り返し処理を書くときは、条件式に使っている変数がループ内で変化しているかを確認しましょう。

6-3. セミコロンを書き忘れる

do while文では、最後のwhileの後にセミコロンが必要です。

C#
do
{
Console.WriteLine("Hello");
}
while (true);

次のようにセミコロンを書き忘れると、エラーになります。

C#
do
{
Console.WriteLine("Hello");
}
while (true)

do while文の最後は必ず;で終わると覚えておきましょう。

6-4. 波括弧の範囲を間違える

do while文では、doブロックの波括弧{ }の範囲にも注意が必要です。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count <= 3);

この場合、Console.WriteLine(count);count++;の両方が繰り返されます。

しかし、波括弧の位置を間違えると、意図した処理がループに含まれないことがあります。

読みやすくするためにも、do{ }whileの位置をそろえて書くようにしましょう。

6-5. 条件が最初からfalseでも1回実行される点に注意

do while文は、条件が最初からfalseでも必ず1回実行されます。

C#
int age = 10;

do
{
Console.WriteLine("この処理は実行されます");
}
while (age >= 20);

このコードでは、age >= 20falseです。

しかし、doブロックは先に実行されるため、メッセージが表示されます。

「条件を満たす場合だけ処理したい」という場合は、do while文ではなくwhile文やif文を使ったほうが適切です。

7. do while文の無限ループ対策

7-1. 無限ループが発生する原因

無限ループとは、ループの終了条件が満たされず、処理が終わらなくなる状態のことです。

do while文で無限ループが発生する主な原因は次のとおりです。

条件式が常にtrueになっている
条件式に使う変数を更新していない
更新処理の位置が間違っている
break文で抜ける条件が用意されていない

無限ループになると、プログラムが止まらなくなったり、CPU使用率が高くなったりすることがあります。

7-2. 条件式が常にtrueになる例

次のコードは、無限ループの例です。

C#
do
{
Console.WriteLine("繰り返し中");
}
while (true);

while (true)は、条件式が常にtrueです。

そのため、何もしなければ永遠に処理が繰り返されます。

意図的に無限ループを使うこともありますが、その場合は必ずbreakなどで抜ける条件を用意しましょう。

7-3. ループ内で変数を更新する

無限ループを防ぐ基本は、条件式に使う変数をループ内で正しく更新することです。

悪い例は次のとおりです。

C#
int count = 1;

do
{
Console.WriteLine(count);
}
while (count <= 5);

countが更新されないため、ずっとcount <= 5trueになります。

正しい例は次のとおりです。

C#
int count = 1;

do
{
Console.WriteLine(count);
count++;
}
while (count <= 5);

count++によって値が増えるため、最終的にcount <= 5falseになり、ループが終了します。

7-4. break文でループを抜ける

break文を使うと、条件式に関係なくループを終了できます。

C#
int count = 1;

do
{
Console.WriteLine(count);

if (count == 3)
{
break;
}

count++;
}
while (true);

実行結果は次のようになります。

1
2
3

このコードでは、while (true)によって無限ループの形になっています。

しかし、count == 3になった時点でbreakが実行されるため、ループを抜けます。

break文は便利ですが、多用すると処理の流れがわかりにくくなることがあります。基本は条件式で終了条件を表し、必要な場合だけbreakを使うとよいでしょう。

7-5. デバッグでループ条件を確認する

do while文が思ったように終了しない場合は、ループ内で変数の値を表示して確認すると原因を見つけやすくなります。

C#
int count = 1;

do
{
Console.WriteLine("count = " + count);
count++;
}
while (count <= 5);

Visual Studioを使っている場合は、ブレークポイントを設定して、変数の値がどのように変化しているかを確認できます。

特に次の点を確認しましょう。

条件式は正しいか
条件式に使う変数は更新されているか
更新するタイミングは正しいか
break文が必要な場所にあるか

無限ループを防ぐには、「いつ条件式がfalseになるのか」を明確にすることが重要です。

8. do while文とbreak・continueの使い方

8-1. break文で繰り返しを終了する

break文は、ループ処理を途中で終了したいときに使います。

C#
int number = 1;

do
{
Console.WriteLine(number);

if (number == 5)
{
break;
}

number++;
}
while (number <= 10);

実行結果は次のようになります。

1
2
3
4
5

本来はnumber <= 10の間繰り返す条件ですが、number == 5になった時点でbreakが実行され、ループを終了します。

ユーザーが特定の入力をしたときに処理を中断したい場合などに使えます。

C#
string input;

do
{
Console.Write("入力してください: ");
input = Console.ReadLine();

if (input == "q")
{
Console.WriteLine("終了します");
break;
}

Console.WriteLine("入力内容: " + input);
}
while (true);

この例では、ユーザーがqを入力するとループを終了します。

8-2. continue文で次の繰り返しへ進む

continue文は、現在の繰り返し処理を途中でスキップし、次の繰り返しへ進むための文です。

C#
int number = 0;

do
{
number++;

if (number == 3)
{
continue;
}

Console.WriteLine(number);
}
while (number < 5);

実行結果は次のようになります。

1
2
4
5

numberが3のとき、continueが実行されます。

そのため、Console.WriteLine(number);は実行されず、次の繰り返しへ進みます。

特定の条件に一致するデータだけ処理を飛ばしたい場合に便利です。

8-3. break・continueを使う際の注意点

breakcontinueを使うと、ループの制御を柔軟に行えます。

しかし、使いすぎると処理の流れが複雑になり、コードが読みにくくなることがあります。

特にcontinueを使う場合は、変数の更新処理がスキップされないように注意しましょう。

悪い例は次のとおりです。

C#
int count = 1;

do
{
if (count == 3)
{
continue;
}

Console.WriteLine(count);
count++;
}
while (count <= 5);

このコードでは、countが3になるとcontinueが実行されます。

しかし、count++が実行されないため、countはずっと3のままになり、無限ループになります。

このような場合は、continueの前に変数を更新する必要があります。

C#
int count = 1;

do
{
if (count == 3)
{
count++;
continue;
}

Console.WriteLine(count);
count++;
}
while (count <= 5);

breakcontinueを使うときは、ループが正常に終了するかを必ず確認しましょう。

9. do while文を使うべきケース・使わないほうがよいケース

9-1. do while文が向いているケース

do while文が向いているのは、処理を最低1回は実行したいケースです。

代表的な例は次のとおりです。

ユーザー入力を受け付ける処理
メニューを表示する処理
再試行するかどうかを確認する処理
条件を満たすまで入力を繰り返す処理
ゲームやクイズで最低1回は問題を出す処理

たとえば、ログイン処理でユーザーにIDやパスワードを入力してもらう場合、最初の入力画面は必ず表示する必要があります。

このような場合は、do while文を使うと自然に書けます。

9-2. while文のほうが向いているケース

while文が向いているのは、条件を満たす場合だけ処理したいケースです。

たとえば、最初から条件を満たしていなければ、処理を1回も実行したくない場合です。

C#
int stock = 0;

while (stock > 0)
{
Console.WriteLine("商品を販売します");
stock--;
}

この例では、在庫がある場合だけ販売処理を行います。

在庫が0なら、処理は1回も実行されません。

このように、「条件を先に確認したい」ときはwhile文が適しています。

9-3. for文のほうが向いているケース

for文が向いているのは、繰り返す回数があらかじめ決まっているケースです。

C#
for (int i = 1; i <= 5; i++)
{
Console.WriteLine(i);
}

このコードでは、1から5までの5回繰り返すことが明確です。

カウント処理や配列・リストの順番処理など、回数が決まっている繰り返しではfor文のほうが読みやすいことが多いです。

C#
string[] names = { "佐藤", "鈴木", "田中" };

for (int i = 0; i < names.Length; i++)
{
Console.WriteLine(names[i]);
}

do while文でも同じ処理は書けますが、回数が決まっている場合はfor文を使うほうが一般的です。

9-4. 初心者が迷ったときの判断基準

初心者がdo while文、while文、for文のどれを使うか迷ったときは、次の基準で考えるとわかりやすいです。

最低1回は実行したい → do while文
条件を満たす場合だけ実行したい → while文
繰り返す回数が決まっている → for文

特にdo while文を使うか迷った場合は、「条件が最初からfalseでも1回実行されてよいか?」を考えてください。

1回実行されてよい、または1回実行される必要があるならdo while文が向いています。

逆に、1回でも実行されると困る場合は、while文やif文を使いましょう。

10. C#のdo while文に関するよくある質問

10-1. do while文は必ず1回実行されますか?

はい。C#のdo while文は、条件式の判定より先にdoブロックの処理を実行します。

そのため、条件式が最初からfalseでも、処理は必ず1回実行されます。

C#
int x = 100;

do
{
Console.WriteLine("1回は実行されます");
}
while (x < 10);

このコードでは、x < 10falseですが、メッセージは表示されます。

10-2. do while文とwhile文はどちらを使えばよいですか?

処理を最低1回実行したい場合はdo while文を使います。

条件を確認してから処理を実行したい場合はwhile文を使います。

たとえば、ユーザーに入力を求める処理では、最初に必ず入力を受け付ける必要があるため、do while文が向いています。

一方、データが存在するときだけ処理したい場合は、while文のほうが適しています。

10-3. do while文で複数条件を指定できますか?

はい。do while文の条件式には、複数条件を指定できます。

複数条件を指定する場合は、論理演算子を使います。

C#
int number;

do
{
Console.Write("1以上10以下の数値を入力してください: ");
number = int.Parse(Console.ReadLine());
}
while (number < 1 || number > 10);

このコードでは、numberが1未満、または10より大きい場合に繰り返します。

||は「または」、&&は「かつ」を表します。

C#
while (条件1 && 条件2);
while (条件1 || 条件2);

複数条件を書くときは、条件の意味がわかりやすくなるように、必要に応じて括弧を使うとよいでしょう。

10-4. do while文の中にif文は書けますか?

はい。do while文の中にif文を書くことはできます。

C#
int number = 1;

do
{
if (number % 2 == 0)
{
Console.WriteLine(number + " は偶数です");
}
else
{
Console.WriteLine(number + " は奇数です");
}

number++;
}
while (number <= 5);

実行結果は次のようになります。

1 は奇数です
2 は偶数です
3 は奇数です
4 は偶数です
5 は奇数です

このように、ループ内で条件分岐を使うことで、値に応じた処理を行えます。

10-5. do while文は実務で使われますか?

はい。do while文は実務でも使われます。

ただし、すべての繰り返し処理で頻繁に使われるわけではありません。

実務では、回数が決まっている処理にはfor文、コレクションの要素を順番に処理する場合にはforeach文、条件を先に確認する場合にはwhile文が使われることも多いです。

do while文は、特に次のような処理で使われます。

入力チェック
メニュー選択
再試行処理
最低1回実行する必要がある処理

つまり、do while文は使う場面を選ぶ構文です。

特徴を理解しておけば、必要な場面で適切に使えるようになります。

まとめ

C#のdo while文は、条件がtrueである間、処理を繰り返すための構文です。

最大の特徴は、条件式を判定する前に、まずdoブロック内の処理を実行することです。そのため、条件式が最初からfalseであっても、処理は必ず1回実行されます。

基本構文は次のとおりです。

C#
do
{
// 繰り返したい処理
}
while (条件式);

while文との違いは、条件判定のタイミングです。

while文      : 条件を判定してから処理する
do while文 : 処理してから条件を判定する

do while文は、ユーザー入力、メニュー表示、再入力処理など、最低1回は実行したい処理に向いています。

一方で、条件を満たす場合だけ実行したい処理にはwhile文、繰り返す回数が決まっている処理にはfor文が向いています。

また、do while文では、条件式や変数の更新を間違えると無限ループが発生することがあります。

無限ループを防ぐためには、次の点を意識しましょう。

条件式が正しいか確認する
条件式に使う変数をループ内で更新する
必要に応じてbreak文を使う
continue文で更新処理を飛ばさないようにする

C#のdo while文は、特徴を理解すれば難しい構文ではありません。

「最低1回は処理を実行したいかどうか」を判断基準にして、while文やfor文と適切に使い分けていきましょう。