-2

我遇到了一些foreach循环问题List<T>

foreach (DefenceTerminal defence in DefenceManager.defenceCollection)
{
    defence.ReadNetworkPacket(packetReader);
    //this is a very simple function that just sets defence.damage = to whatever
    //it properly sends the value and sets it
    //defence.damage is a int
}

当我离开循环时,价值......消失了。(它无法改变)

离开循环后,所有值都保持不变

在更新中以类似的方式访问该列表。

我也使用for循环作为替代方案,所以我想这比List<T>其他任何问题都更重要。

但是,我更愿意继续使用列表。建议?

对于那些想要非常简单的功能的人来说,这是非常简单的功能

    public void ReadNetworkPacket(PacketReader packetReader)
    {
        damage = packetReader.ReadInt32();
    }

IT 工作,列表和循环没有。

再次:虽然在循环中一切正常,我已经检查了多次,但它并没有......坚持......就像它制作了自己的小个人列表来搞乱然后在完成后将其丢弃,这在您尝试更新列表。我敢肯定,这是一个与 List 有关的奇怪特质。

其他废话:

public static List<DefenceTerminal> defenceCollection = new List<DefenceTerminal>();

        for (int i = 0; i < factionCount; i++)
        {
            DefenceTerminal d = new DefenceTerminal();
            for (int j = 0; j < defenceLimit; j++)
            {
                defenceCollection.Add(d);
            }
        }
4

2 回答 2

1

请发布更多代码,但我觉得您创建的集合过于本地化,将其移到类范围的更高位置,就像整个类的私有成员变量一样。

于 2012-06-09T03:27:28.507 回答
0

听起来像是DefenceTerminal一种struct,因此是一种value类型。这意味着当您浏览时,foreach loop您只是在更改副本。尝试使用经典for loop并索引实际列表。

于 2012-06-09T03:19:03.863 回答