0

ボールの色をランダムに変更しようとしていますが、色変数を使用してソリッド ブラシの色にしようとすると、割り当てられていないと表示されます。「割り当てられていないローカル変数 'ballColour' の使用」

    xPos = xPos + GAP_SIZE;
    int colour = rand.Next(1, 40);
    Color ballColour;
    if (colour >= 1 && colour <= 9)
    {
        ballColour = Color.Blue;
    }
    else if (colour >= 10 && colour <= 19)
    {
        ballColour = Color.Orange;
    }

    else if (colour >= 20 && colour <= 29)
    {
        ballColour = Color.Green;
    }
    else if (colour >= 30 && colour <= 39)
    {
        ballColour = Color.Red;
    }
    else if (colour == 40)
    {
        ballColour = Color.Purple;
    }
    SolidBrush ballColourBrush = new SolidBrush(ballColour); //This is the one that returns the error.
    paper.FillEllipse(ballColourBrush, xPos, yPos, BALL_SIZE, BALL_SIZE);
                    xPos = xPos + BALL_SIZE;
4

2 に答える 2

4

コンパイラは、if/else ブロックが包括的であることを認識していないためballColour、割り当てられていない可能性があることを警告しています。if/else ブロックを更新せずに単純に変更すると、更新されrand.Next(1, 40);ない場合があります。

対処法 1: 何かに初期化する

Color ballColour = Color.White;

対処法 2: else を使用します。

...
else                //if (colour == 40)
{
    ballColour = Color.Purple;
}

これにより、コンパイラは、あらゆる場合に値が設定されていることを「確認」できます。

対処法 3: 上記のすべて

最初の値に初期化し、最初のテストをスキップしてコードを削減します。

Color ballColour = Color.Blue;

if (colour >= 10 && colour <= 19)
...
else     
{
    ballColour = Color.Purple;
}

の 2 番目のパラメータRandom.Next(min, max)exclusiveであるため、値が 40 になることはありません。rand.Next(1, 41)

于 2016-05-29T00:22:40.863 に答える