我正在尝试随机更改球的颜色,但是当我尝试使用颜色变量成为实心画笔的颜色时,它说它是未分配的。 "使用未赋值的局部变量'ballColor'"
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;
你的 if/else 块是包罗万象的,所以它警告ballColour
可能未分配。 在不更新 if/else 块的情况下对 rand.Next(1, 40);
进行简单的更改,它可能不是。
补救措施 1:初始化为某些内容
Color ballColour = Color.White;
补救措施 2:使用其他:
...
else //if (colour == 40)
{
ballColour = Color.Purple;
}
这允许编译器"看到"为任何和所有情况设置的值。
补救措施3:以上所有
初始化为第一个值并跳过第一个测试以减少代码:
Color ballColour = Color.Blue;
if (colour >= 10 && colour <= 19)
...
else
{
ballColour = Color.Purple;
}
请注意,要Random.Next(min, max)
的第二个参数是独占的,因此该值永远不能为 40。 您可能想要rand.Next(1, 41)
这里的问题是,在执行过程中和执行以下代码行时,可能不满足任何 if 条件,变量 "ballColor" 可以取消分配。
SolidBrush ballColourBrush = new SolidBrush(ballColour);