【问题标题】:Use of unassigned local variable - to me it should be assigned使用未分配的局部变量 - 对我来说应该分配
【发布时间】:2013-09-27 12:42:35
【问题描述】:

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

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]);

显示错误:使用未分配的局部变量。从我的观点来看,它应该在循环中分配为SEAT = i + j;

如果有人知道发生了什么,我可以寻求帮助。

【问题讨论】:

  • 顺便问一下,你有没有注意到你永远不会达到else-部分条件?
  • 你为什么从i = 1开始?应该是i = 0,不是吗?与j 相同

标签: c# arrays unassigned-variable


【解决方案1】:

试想一下有可能条件(AntalPassagerer &lt;= AntalSaeder)最初是false。在这种情况下,SEAT 没有被初始化,因为编译器不会猜测 AntalPassagererAntalSaeder 的值以及依赖的表达式。由于编译器不会猜测您的算法流程,因此从编译器的角度来看,该变量可能未声明。

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

【讨论】:

  • 非常感谢,我会试试看。如果您发现任何明显的错误,请毫不犹豫地指出它们 - 如上所述,我是这方面的新手,可以使用一些知识输入!
猜你喜欢
  • 2016-10-04
  • 1970-01-01
  • 2013-10-18
  • 2015-11-09
  • 2012-05-18
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多