ここではC#のJump(break, continue, return, goto)構文について学びましょう。
ただし、goto構文だけは特殊なので別枠で解説します。
ここでは最後のJump statementのgoto文について学びましょう。 goto statement (ステートメント) このgoto文とは、全ての制約を無視して指定したラベルまでジャンプ(移動)できるヤバい構文です。恐らく否定的な意見のほうが多く、僕もそうでしたが学校の授業なら100%使うなって教わります。 何故でしょうか? それはプログラムの基本構造を無視して動作するからです。では、実際にサンプルコードで動きを見てみましょう。 namespace Sam...
Jump statement (ステートメント)
その名前の通り別の位置にジャンプしたり処理を抜けるための構文です。
実はこれ、すでに半分は学習済みです。では、順番に見てみましょう。
ここではC#のfor文とwhile文について理解しましょう。これはプログラムの基本構造で説明した反復にあたる処理です。なお、プログラムの基本構造が分からない人は先に次の記事を読んでください。 for statement (ステートメント) いわゆる繰り返し処理でfor文と呼びます。これは条件式を満たす限り、同じ処理を永遠と繰り返す構文です。 ポイントは次の3つです。 初期化で変数を宣言する 条件式に繰り返し条件を記述する 反復式で変数をインクリメ...
break statement (ステートメント)
switch文やfor文を抜けるために使いましたよね。
continue statement (ステートメント)
これはfor文やwhile文の繰り返し処理で使いました。
return statement (ステートメント)
ここからが今回の本題ですね。returnとは関数自体を抜けるために使います。
関数?と思うでしょうが、今もMain関数を利用してますよ。
ここではC#の関数について学びます。 関数 (function) 関数とは、同一の処理を1機能としてまとめ、いつでも呼び出しできるようにする機能です。 例えばコードに同じような記述が10回ある場合、同じコードを10回書くのは非効率です。こういった場合に該当するコードを関数化して、いつでも呼び出せるようにします。 ちなみに、厳密にはC#に関数は存在せず、それよりも強化された仕組みとしてメソッドが存在します。メソッドは必ずクラスに属する必要があるのですが、今はそこまでの知識は...
このreturnですが、呼び出された時点でその関数の処理をやめて即時終了します。
そして、breakと異なり関数内のどこでも利用できます。まずはサンプルコードの動作を見てみましょう。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("開始");
return; // ここをコメントアウトしてみよう
Console.WriteLine("終了");
}
}
}
挙動を確認するためにreturnをコメントアウトしてみましょう。
その場合は後半まで処理が進んで終了が表示されます。
では、まだ分からないかもですがMain関数以外のパターンも体験しましょう。
同じくreturnをコメントアウトすることも忘れずに。
namespace Sample
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main: 開始");
Function(); // 後述した static void Function() に飛ぶ
Function(); // 〃
Function(); // 〃
Function(); // 〃
Function(); // 〃
Console.WriteLine("Main: 終了");
}
static void Function()
{
Console.WriteLine("Function: 開始");
return; // ここをコメントアウトしてみよう。
Console.WriteLine("Function: 終了");
}
}
}
returnの有無で関数の後半がスキップされるのが分かったでしょうか。
このようにreturnが呼ばれた時点で、その関数は処理を終了します。
Main関数でreturnした場合はどこに進んでるんですか?
Main関数の始まりから終わりまでがプログラムになるんだ。
つまりreturnで抜けるってことは、その時点でプログラムを終了するってことだね。
TipsMain関数でreturnするとプログラムが終了する。
あとがき
returnでプログラムが終了してるのは、今はMain関数しか使ってないからです。
この仕組みはとても大切なので、勘違いしないようにしてください。
◆ C#に関する学習コンテンツ
この記事は参考になりましたか?
コメント