使用未分配的局部变量 - 对我来说应该分配

时间:2013-09-27 12:42:35

标签: c# arrays unassigned-variable

我对C#编程比较陌生。我试图实现的代码应该为我的变量SEAT提供一个Array值。

private void btnFindSeat_Click(object sender, EventArgs e)
{
    int AntalSaeder = int.Parse(txtbxSeats.Text);
    int AntalPassagerer = int.Parse(txtbxPassengers.Text);


    int[] SEATARRAY;
    SEATARRAY = new int[AntalSaeder];

    int RandomTal = Randomizer.Next(1, AntalSaeder);
    int s = 0;
    int SEAT;

    listBox1.Items.Clear();

    for (int i = 1; i < AntalSaeder; i++)
    {
        for (int j = 1; j < AntalPassagerer; j++)
        {
            if (AntalPassagerer > AntalSaeder)
            {
                MessageBox.Show("Flyet er overbooket");
            }

            else if (AntalPassagerer <= AntalSaeder)
            {
                SEAT = i + j;
            }
            else
            {
                while (AntalPassagerer <= AntalSaeder)
                {
                    if (!SEATARRAY.Contains(RandomTal))
                    {
                        SEATARRAY[i] = RandomTal;
                        i++;

                        listBox2.Items.Add(SEATARRAY[RandomTal]);

                    }

                    SEATARRAY[s] = SEAT;
                    s++;
                    listBox1.Items.Add(SEATARRAY[RandomTal]);

                }
            }
        }
    }
}

出于某种原因,变量SEAT在:

SEATARRAY[s] = SEAT;
s++;
listBox1.Items.Add(SEATARRAY[RandomTal]);

显示错误:使用未分配的局部变量。从我的pov开始,它应该在循环内分配为SEAT = i + j;

如果有人知道发生了什么,我可以使用一些帮助。

1 个答案:

答案 0 :(得分:1)

考虑一下条件(AntalPassagerer <= AntalSaeder)最初可能false的情况。在这种情况下,SEAT未初始化,因为编译器不会猜测AntalPassagererAntalSaeder的值以及依赖表达式。出于这个原因,编译器没有猜测你的算法流程,变量可能在编译器的视图中未声明。

您应该根据业务逻辑断言SEAT以任何方式初始化。如果你只是想让它在最初的声明中运行调试集SEAT为任何值,例如0或1或其他任何值:int SEAT = 0;

相关问题