.net column

.NET開発者のためのブログメディア
プログラムコード

【C#入門】for文を使ったループ処理のテクニック

2020年09月04日

C#のfor文を使用すると、繰り返し(ループ)処理を実現することができます。ループ処理中は繰り返したい動作を含めて、条件を満たす間は実行され続けます。
この記事では、ループ処理の書き方や停止する方法を解説します。ループ処理はプログラミングの基礎となる部分なので、ぜひ参考にしてみてください。

PG
for文を特定の条件で抜けたいのですが、上手く抜けてくれません。アドバイスを頂けないでしょうか?
PL
for文を抜ける方法はいくつかありますね。どれが適切か、ここで学んでいきましょう。

実行環境
・Windows 10 Home
・Visual Studio Community 2019

for文の書き方と構造

for文はループ処理を実行するための構文となり、構造は以下のとおりです。

【初期化式】
ループ前に1回実行される式です。基本的には変数の初期化処理を行います。
【条件式】
ループの反復前に毎回とおる式です。条件式の結果が真(true)となる場合に、反復処理が継続されます。
【反復式】
ループ内の反復処理が終わるたびに呼ばれる式です。ここで何も変化を持たせないと、条件式を抜けられず、無限ループとなる可能性もあるので注意しましょう。

for文による変数iの変化はイメージできるでしょうか。
iは初期値0から1ずつ加算され、iが3未満の間は出力処理が繰り返し実行されています。
そのため、「i = 2」までしか出力されていませんね。

for文からのスキップ

breakでスキップ

前項ではfor文の条件式によってループ処理を終了しましたが、breakを使用すると、ループを強制的に終了することもできます。

if文で使用されている「%」は余りを計算する演算子なので、2で割った余りが0(偶数)かそれ以外(奇数)で分岐しています。初期値の0は偶数なのでiが出力されていますが、次の1は奇数なので、breakでfor文を抜けて「end.」が出力されていますね。

continueでスキップ

それでは、breakをcontinueに差し替えるとどうなるでしょうか。

continueの場合は「i = 2」も出力されています。これは、breakが強制的にfor文を抜けるのに対して、continueはfor文を抜けずに次の反復処理を呼び出すためです。

for文の終了

gotoで終了

gotoを使用とすると、プログラムの制御をラベル付きのステートメントに移動することができます。

for文の条件式はiが3未満の間となっていますが、if文の分岐によりiが1と一致したタイミングでfor文を終了し、Hitラベルの位置に処理が移動しています。そのため、「Hit!」が出力されていますね。

returnで終了

returnを使用とすると、メソッドを終了し、呼び出し元に制御が返ります。今回はMain関数から呼び出されるサブメソッドも必要となるため、メソッドの定義も記載しておきます。

Subメソッド内にreturnが2つありますが、メソッドの最後まで実行された場合、「ret = -1」と出力されるはずです。しかし、「ret = 3」と出力されたということは、for文の途中で抜けていることが分かりますね。

throwで終了

throwは、プログラムの実行中に例外が発生したことを通知します。

Int32.TryParseは数値変換ができない場合、falseを返します。list[2]は“A”で数値変換できないため、throwが呼ばれて、catchでエラーメッセージが表示されています。

PG
解説ありがとうございます。問題の解決策が見えてきました。
PL
それは良かったです。いきなりfor文を書くのが難しい時は、一度日本語で処理手順を整理するのもおすすめですよ。

C#のループ処理は処理手順が大切です

今回はfor文を使用したループ処理を紹介しました。処理中に問題が発生した場合は、スキップや終了させたいこともあると思います。処理手順を意識してコーディングをしないと、思わぬ不具合を招くこともあるので注意しましょう。
ぜひ紹介したテクニックを活用して、ループ処理を書いてみてください。

>>>C#の案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)