Jump Statements (goto)
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部 — レッスン 20/66。
C# の goto 文は、同じメソッド内のラベル付きステートメントに直接制御を転送する方法を提供します。
コードにラベルを作成してください:
start:goto 文を使用してそのラベルにジャンプします:
goto start;gotoを使用してループを作成する簡単な例です:
int i = 0;
start:
if (i < 5)
{
Console.WriteLine(i);
i++;
goto start;
}上記のコードを実行すると、出力は次のようになります:
0
1
2
3
4C# には goto が存在しますが、if, for, while などの構造化された制御フローステートメントを使用することを一般的に推奨します。これによりコードがより読みやすく保守しやすくなります。
チャレンジ
簡単ProcessCommands という名前のメソッドを作成してください。このメソッドは 1 つの引数を受け取ります:
- 処理するコマンドを含む文字列(
command)。
このメソッドは、goto 文を使用してシンプルなコマンドプロセッサを実装する必要があります:
- コマンドが "start" の場合、"Starting process" を出力してから "end" ラベルに移動します
- コマンドが "stop" の場合、"Stopping process" を出力してから "end" ラベルに移動します
- コマンドが "pause" の場合、"Pausing process" を出力してから "end" ラベルに移動します
- コマンドがそれ以外の場合、"Unknown command" を出力してから "end" ラベルに移動します
- "end" ラベルで「Command processed」を出力します
チートシート
goto 文は、同じメソッド内のラベル付きステートメントに制御を直接転送します。
ラベルを作成:
start:goto を使用してラベルにジャンプ:
goto start;goto を使用してループを作成する例:
int i = 0;
start:
if (i < 5)
{
Console.WriteLine(i);
i++;
goto start;
}C# には goto が存在しますが、コードの可読性と保守性を向上させるために、構造化された制御フロー文 (if, for, while など) が一般的に推奨されます。
自分で試してみよう
using System;
public class Program
{
public static void ProcessCommands(string command)
{
// ここにコードを書いてください
}
public static void Main(string[] args)
{
string command = Console.ReadLine();
ProcessCommands(command);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety