变量不持有价值

时间:2014-05-15 11:33:31

标签: c# for-loop null

我正在阅读一本帮助我学习C#的书,其中一个项目就像是在小学电子课程中教授的那些旧游戏之一。此特定示例使用for循环定义房间或区域有多少出口(外门)。

这是穿过外门的一个例子。当我回到门口时,使用" MoveToANewLocation()"方法," currentLocation"失去了它的价值。 for循环随后将值设置为负值,从而导致错误。

private void MoveToANewLocation(Location newLocation)
    {
        currentLocation = newLocation;

        exits.Items.Clear();
        for (int i = 0; i < currentLocation.Exits.Length; i++)
        {
            exits.Items.Add(currentLocation.Exits[i].Name);
        }

        exits.SelectedIndex = 0;

        description.Text = currentLocation.Description;

        if (currentLocation is IHasExteriorDoor)
        {
            goThroughTheDoor.Visible = true;
        }
        else
        {
            goThroughTheDoor.Visible = false;
        }

    }

我有一个与上面完全相同的参考示例,它有效。我很难过为什么currentLocation在按钮&#34; goThroughTheDoor&#34;时失去了它的价值。调用&#34; MoveToANewLocation()&#34;方法

道歉如果不清楚,我对现代编程仍然很陌生

1 个答案:

答案 0 :(得分:0)

MoveToANewLocation方法开始时,它会将currentLocation设置为参数newLocation的副本:

//currentLocation = newLocation;

当方法退出时,currentLocation超出范围,垃圾收集器可以清理以在范围对象中使用该内存。这解释了退出方法后其值如何丢失。