【初心者向け】while文とは?C#でのWhile文の書き方を紹介!

- システム
エンジニア - while文とは、どのようなものなのでしょうか?
- プロジェクト
マネージャー - 回数に依存しない様々な繰り返し処理を簡単に書くことができます。
while文とは?
while文とは、条件を指定し、その条件が真である限り文章を繰り返し実行する処理を指します。while文を使うことで、回数に依存しない様々な繰り返し処理を簡単に書くことができます。この記事では、C#言語を用いたwhile文の書き方について説明していきます。while文に相当する処理は大抵の言語に存在し頻繁に利用される構文のため、C#をあまり使わないという方も読んでみてください。
参考:do-while文
do-while文とは、指定した条件が偽であっても、中の文章を一度は必ず実行する処理を指します。この記事では、while文とともにこのdo-while文についても取り扱っていきます。といってもwhile文と書き方はほとんど変わらないため、より処理が簡潔になるように柔軟に使い分けていく必要があります。
C#でのwhile文の使い方
ここまで、while文や参考としてdo-while文について説明しましたが、いかがでしたか。ここからは、C#でのwhile文の使い方を、breakやcontinueなどのキーワードを含めて説明します。
基本的なwhile文
while文は、このように記述します。while(条件式){ 繰り返したい処理}
このように書くと、条件式が真の間繰り返したい処理が実行されます。また、繰り返したい処理が一行だけの場合は、while(条件式) 繰り返したい処理
というように中括弧を省略することができます。while文を使用したC#処理の例を示します。C#のコード内に以下のように記述し、実行します。int i = 0;while(i < 5){ Console.WriteLine("i = {0}", i); i++;}
[出力]i = 0i = 1i = 2i = 3i = 4
このコードでは、int i = 0
と初期化し、while文を用いてi < 5
を満たす間、「iを出力しi++
(iにi+1を代入)する」という処理を繰り返しています。
do-while文
do-while文は、このように記述します。do{ 繰り返したい処理}while(条件式);
このように書くと、繰り返したい処理が一度実行されたのち、条件式が真の間繰り返したい処理が実行されます。また、繰り返したい処理が一行だけの場合は、do 繰り返したい処理while(条件式);
というように中括弧を省略することができます。do-while文を使用したC#処理の例を示します。C#のコード内に以下のように記述し、実行します。int n;do{ Console.Write("Input number between 0 and 5 : "); n = int.Parse(Console.ReadLine());}while(n < 0 || n > 5);Console.Write("The number that you input is { 0 }", n);
[出力]Input number between 0 and 5 : 8Input number between 0 and 5 : -1Input number between 0 and 5 : 4The number that you input is 4
このコードでは、int n
と宣言し、do-while文を用いて「nが0より小さいまたは5より大きい」ときにnへと入力を受け取る繰り返し処理を行なっています。このように、先に入力された結果や関数の返り値によって処理をもう一度実行させたい場合は、do-while文によって簡潔に書くことができます。
break, continue
while文やdo-while文には、条件式にかかわらずwhile文全体から抜けるbreakと、while文の先頭に戻るcontinueが存在します。breakの例を示します。C#で以下のように記述し、実行します。while(true){ // 条件式がtrueのため、永久に繰り返される Console.WriteLine("a"); break; Console.WriteLine("b");}
[出力]a
本来だとa, bの出力が永遠にされ続けますが、break
をしたことで、bを出力する前にwhile文から抜け、aだけが出力される結果となりました。次に、continueを用いた例を紹介します。C#で以下のコードを記述し、実行します。int sum;do{ Console.Write("Input number (end to input -1) : "); string s = Console.ReadLine(); int data; if (!int.TryParse(s, out data)) { Console.WriteLine("Cannot parse to int the input : ”{0}”", s); continue; } sum += data;}while(data != -1);Console.WriteLine("The sum is {0}", sum);
[出力]Input number (end to input 0) : 4Input number (end to input 0) : aCannot parse to int the input : “a”Input number (end to input 0) : 3Input number (end to input 0) : 0The sum is 7
このプログラムでは、「0が入力されるまで数値入力を受け取り、それらの合計を出力する」というプログラムです。少々複雑なため、プログラムについて順番に説明していきます。 Console.Write("Input number (end to input -1) : "); string s = Console.ReadLine();
まずこの部分では、数値入力を受け取り、string型変数であるsに格納しています。次に、足し合わせるために変数dataにint data = int.Parse(s);
と書きたいところですが、この処理はユーザーが数値以外のデータを入力してしまった時、int.Parse()に失敗してプログラムが強制終了してしまうという欠点があります。そこで、int.TryParse(s, out data)
関数を用います。この関数は、もしsが数値でなかった場合に、dataにとりあえずの値として0を格納し、false
を返します。数値だった場合はdataをその数値にして、true
を返します。この関数を利用し、 if (!int.TryParse(s, out data)) { Console.WriteLine("Cannot parse to int the input : ”{0}”", s); continue; }
と記述することで、int.TryParseが失敗しfalseが返ってきたときは、continue;
を実行してまた入力処理をやり直させることができます。continueはループ内の最初に戻る処理のため、 Console.Write(“Input number (end to input -1) : “);
まで戻ります。
for文との使い分け
同じく繰り返し処理として、初期化式、条件式、更新式の3つを使って繰り返しを記述するfor文があります。最初に初期化式が一度だけ実行され、そのあとは条件式が真の間繰り返しを続行、一回の反復ごとに更新式を実行する、といった処理を行います。結論から言うと、複雑な初期化や更新をする場合はwhile文、どちらとも単純な場合はfor文を使用します。
なぜそうなるのか?
while文は、for文の初期化式、条件式、更新式のうち、条件式だけを記述したfor文と考えてもらって構いません。しかし、以下のようにするとwhile文でも更新式や初期化式を記述することができます。for(初期化式; 条件式; 更新式){ ...}// 上のfor文は下のwhile文と等価初期化式;while(条件式){ ... 更新式;}
このような特徴を踏まえると、for文は初期化式、条件式、更新式を1行にまとめて書きますが、while文はそれらを別々に、例えば初期化式に2行以上使うといったことも容易にできます。そのため初期化や更新処理が単純な場合はfor文、そうでない場合はwhile文を用いるようにします。
- システム
エンジニア - C#におけるwhile文の書き方を覚えておけば、ほかのプログラミング言語でも応用できそうですね。
- プロジェクト
マネージャー - そうですね。while文は様々な言語で使われるので、しっかりマスターしておきましょう!
C#におけるwhile文の書き方を知ろう!
この記事では、C#におけるwhile文の書き方、do-while文、break, continueの用い方をサンプルを用いて解説し、またfor文との違いを説明してきました。while文は様々な言語で使われるため、ぜひチャレンジしてみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)