7
for (int y = 0; y < GameBoard.GameBoardHeight; y++)
        for (int x = 0; x < GameBoard.GameBoardWidth; x++)
        {
            if (GetSquare(x, y) == "Empty")
            {
                 RandomPiece(x, y);
            }
        }

最初の for ループには中括弧がなく、次の行は . を含むステートメントでさえありません;。ただのforループです。

これどうしたの?

4

6 に答える 6

8

MSDN:forループは、指定された式がfalseと評価されるまで、ステートメントまたはステートメントのブロックを繰り返し実行します。

理解すべき主なポイントは、ステートメントまたはステートメントのブロック部分を実行することです。ネストされた例は、ペアforのためにステートメントのブロックを含むステートメントです。{ }

したがって、ネストされた操作ごとに1つのステートメントとして上記を記述した場合は、次のように記述します。

for (int y = 0; y < GameBoard.GameBoardHeight; y++)
    for (int x = 0; x < GameBoard.GameBoardWidth; x++)
        if (GetSquare(x, y) == "Empty")
            RandomPiece(x, y);

またはネストされた操作ごとのブロックステートメントとして:

for (int y = 0; y < GameBoard.GameBoardHeight; y++)
{
    for (int x = 0; x < GameBoard.GameBoardWidth; x++)
    {
        if (GetSquare(x, y) == "Empty")
        {
            RandomPiece(x, y);
        }
    }
}
于 2012-07-20T05:26:03.630 に答える
4

for中かっこのないループの本体は、次のステートメントです。この場合、2 番目のforループは、最初のループの本体であるステートメントです。

C# 4.0 仕様 (セクション 8. および 8.8.3) の文法は次のようになります。

for-statement:
    for ( for-initializer; for-condition; for-iterator) embedded-statement

embedded-statement:
    block
    empty-statement
    expression-statement
    selection-statement
    iteration-statement
    jump-statement
    try-statement
    checked-statement
    unchecked-statement
    lock-statement
    using-statement 
    yield-statement

forしたがって、ループの本体はembedded-statement. blockの最初のオプションであるループの本体の周りに中かっこがある場合embedded-statement。として別のforループを持つことは、 (セクション 8.8)embedded-statementに適用可能なオプションの 1 つです。iteration-statement

于 2012-07-20T05:06:45.373 に答える
3

最初の for loop 次のステートメントは 2 番目の for loop であるため、次のように構文を記述しても、プログラムは構文にうまく適合します。

for (int y = 0; y < GameBoard.GameBoardHeight; y++)
        for (int x = 0; x < GameBoard.GameBoardWidth; x++)        
            if (GetSquare(x, y) == "Empty")            
                 RandomPiece(x, y);
于 2012-07-20T05:26:14.570 に答える
2

反復するステートメントを中括弧で囲みます。ループにステートメントを 1 つだけ含める必要がある場合は、中かっこを省略できます。

ステートメントの本体にステートメントが 1 つしか含まれていない場合でも、if、for、または while ステートメントの左中かっこと右中かっこは常に使用する必要があります。

中括弧は、コードの統一性と可読性を向上させます。さらに重要なことは、単一のステートメントのみを含む本文に追加のステートメントを挿入する場合、インデントが構造に強力な (ただし誤解を招く) ガイダンスを与えるため、中括弧を追加するのを忘れがちです。

for(int i = 0; i < 10; ++i) { Console.WriteLine(i) }

:ループの後。中括弧がないと、for ループ ステートメントの直後の最初のステートメントだけがループに入ります。

詳細については、これを参照してください: http://www.dotnetperls.com/omit-curly-brackets

于 2012-07-20T05:35:22.987 に答える
2

ループ本体には、中かっこのforないステートメント (ループ、条件など) を含めることができます。

于 2012-07-20T05:06:44.347 に答える
2

forループもステートメントです。したがって、これは正当な C# コードです。制御フロー構成 (少なくとも C から継承されたもの) は、単一のステートメントまたは複数のステートメントのブロックのいずれかを持つことができます。

for (...) statement
for (...) { statement* }
于 2012-07-20T05:06:45.730 に答える