C# ステートメント

Tip

この記事は、少なくとも 1 つのプログラミング言語を既に知っており、C# を学習している開発者向けの 基礎 セクションの一部です。 プログラミングを初めて使用する場合は、最初に「 はじめ に」チュートリアルから始めてください。 完全なステートメント構文については、C# 言語仕様の ステートメント を参照してください。

別の言語から来ていますか? 宣言、条件、ループ、および戻り値は使い慣れている場合があります。 C# では、これらの機能に独自の構文と分類を使用します。この記事では紹介します。

ステートメントは、「これを実行する」という一つの完全な命令です。プログラム内のステートメントが集まって、プログラムが最初から最後まで従うレシピを形作ります。 ほとんどのステートメントは順番に実行されます。 分岐は実行するステップを選択し、ループはステップを繰り返します。

この例では、数量を宣言して表示し、 if ステートメントを使用して再在庫するかどうかを決定します。

int quantity = 5;
Console.WriteLine($"Quantity: {quantity}"); // => Quantity: 5

if (quantity < 10)
{
    quantity = 10;
    Console.WriteLine("Restocked"); // => Restocked
}

Console.WriteLine($"Quantity: {quantity}"); // => Quantity: 10

部分を確認する前に、完全なコマンドとして例を読みます。 宣言、 Console.WriteLineの最初の呼び出し、 if コンストラクト全体、および Console.WriteLine の最後の呼び出しはステートメントです。 if ステートメント内のブロックには、さらに 2 つのステートメントが含まれています。

ステートメントにはしばしば式が含まれます

ステートメントには、多くの場合、 値を生成するコードの一部である式が含まれています。 前の例では、 if コンストラクト全体がステートメントです。 quantity < 10条件は、trueまたはfalseを生成する式です。

宣言ステートメントでは、ローカル変数または定数が導入されます。 初期化子式は、最初の値を指定できます。

int quantity = 5;

完全な行は宣言ステートメントです。 初期化子 5 は、そのステートメント内の式です。

代入式は、変数、プロパティ、インデクサー、またはその他の格納場所に値を格納します。 C# では、代入式で 式ステートメントを形成できます。

quantity = 10;

このステートメントは、単に値を計算するのではなく、アクションを実行します。 メソッド呼び出しとインクリメント操作は、他の一般的な式ステートメントです。

Console.WriteLine("Restocking");
quantity++;

式ステートメントを使用できるのは、次の式形式のみです。

  • プログラミングにおける代入式
  • メソッド呼び出し式
  • オブジェクト作成式
  • 前置または後置のインクリメント式とデクリメント式
  • await 表現

すべての式が文として単独で成り立つわけではありません。 たとえば、 quantity + 1; は値を計算しますが、使用しません。 これは有効なステートメントではありません。

便利な定義を次に示します。ステートメントは、ほぼ英語の完全な文に似ていますが、 はフレーズのようなものです。 この区別は、ドキュメントと仕様で見つかる正式な用語と説明を理解するのに役立ちますが、通常のコーディングでは、区別を意識して覚えておく必要はほとんどありません。

ブロック内のステートメントをグループ化する

ブロックは、中かっこ ({}) の間に 0 個以上のステートメントをグループします。 C# は、グループを 1 つのステートメントとして扱います。 最初の例では、 if ステートメントは、割り当てと Console.WriteLine の呼び出しの両方を実行できます。これは、ブロックによって 1 つの本文にグループ化されるためです。 ブロックは、他のブロック内に入れ子にすることができます。

選択ステートメントと反復ステートメントは、その本体を 埋め込みステートメントと呼びます。 その本文には、中かっこのない 1 つのステートメント、または複数のステートメントをグループにするブロックを指定できます。

本文にステートメントが 1 つだけ含まれている場合でも、ブロックを優先します。 中かっこは、どのステートメントが本体に属するかを示し、後から編集した際にステートメントが誤って本体の外に置かれるのを防ぎます。

ブロックによって変数スコープが定義される

ブロックで宣言された変数は、その宣言からそのブロックの末尾までスコープ内にあります。 入れ子になったブロックでは、外側のブロックによって宣言された変数を使用できますが、外側のブロックでは、入れ子になったブロックでのみ宣言された変数を使用することはできません。

int outerValue = 10;

if (outerValue > 0)
{
    int innerValue = outerValue * 2;
    Console.WriteLine(innerValue); // => 20
}

// innerValue isn't in scope here.

タスクのステートメントを選択する

ステートメントをコマンドとして認識したら、目的に応じてさまざまな種類を選択できます。

  • Declare data:Declaration ステートメント は、ローカル変数と定数を導入します。
  • アクションを実行します。 式ステートメントは、値の割り当て、メソッドの呼び出し、オブジェクトの作成、値のインクリメントまたはデクリメント、または非同期操作の待機を行います。
  • ステップの選択:ifswitchなどの選択ステートメントで、実行するコードを選択します。
  • 繰り返しステップ:foreachwhileforなどの反復ステートメントは、ステートメントまたはブロックを繰り返します。
  • 制御の移動:ジャンプ ステートメントbreakcontinuereturnyield など)は、実行を別の場所に移します。
  • 例外の処理:例外処理ステートメント (trycatchthrowなど)、エラーに応答するか、エラーを報告します。
  • リソースの管理:using ステートメントを使用すると、リソースが確実に破棄されます。
  • 特殊な動作を使用します。checkedおよびuncheckedfixed、およびlockステートメントは、特定のシナリオをサポートします。

C# 言語仕様

詳細については、C# 言語仕様「ステートメント」セクションを参照してください。

こちらも参照ください