如何使用堆栈而不是列表?

时间:2013-05-18 04:38:18

标签: c# xna

作为我的要求的一部分,我需要在整个代码中使用堆栈而不是列表。我已经做了很多关于使用堆栈类的研究但是我发现很难在C#XNA中找到任何例子。

在调整我的代码之后,我设法使其大部分兼容,但是我很难使下面的代码与堆栈兼容:

    private void UpdateCrystals(GameTime gameTime)
    {
        for (int i = 0; i < gems.Count; ++i)
        {
            Crystal crystal = crystals[i];

            crystal.Update(gameTime);

            if (crystal.BoundingCircle.Intersects(Player.BoundingRectangle))
            {
                crystals.RemoveAt(i--);
                OnGemCollected(crystal, Player);
            }
        }
    }

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

你必须使用.push()和.pop()来实现堆栈 你可以在msdn找到更多关于堆栈的信息 http://msdn.microsoft.com/en-us/library/system.collections.stack.aspx

答案 1 :(得分:1)

那就像是:

// note the i++ instead of ++i ...
for (int i = 0; i < gems.Count; i++)
{
   // gives you the element on top of the stack
   Crystal crystal = crystals.Peek();

   // do other stuff here

   if (crystal.BoundingCircle.Equals(Player.BoundingRectangle))
   {
       // removes the element on top of the stack (the last one entered)
       crystals.Pop();

       // do even more stuff here ...
   }
}

我假设crystalsStack<Crystal>

另外作为旁注:crystals.Push(new Crystal());会在堆栈顶部添加一个元素。

答案 2 :(得分:1)

我认为您的代码位于C# Stack not updating。你能去那里看看这个案子有什么答案吗?