如何实现一个对象[]作为顶级对象始终是最新的?

Rou*_*ace 0 c# arrays xna

我正在编写一个应用程序,我希望实现一个对象数组,它会定期添加一个新项目.

我总是想知道添加的最后一个对象是什么,并且正在考虑将该对象放在位置0(因此将每个项目按下一个索引到最多130个项目)

使用List使用它很容易实现

items.Insert(0,new item());
items.RemoveAt(130);
Run Code Online (Sandbox Code Playgroud)

然后将自动按下每个项目并在130处移除该项目,但这对于数组来说并不是那么简单

我最初想到的地方

for(int i = 129; i>0;i--)
{
 items[i] = items[i-1]; 
}
items[0] = new item();
Run Code Online (Sandbox Code Playgroud)

然后,这允许我简单地访问最新项目(通过索引[0]),并按创建顺序访问每个前面的项目(1 - > 129);

现在本身就相当简单,我想知道是否还有其他方法可以执行此操作.

编辑:感谢您的快速回复,

我已经对此进行了一些测试(使用了100万次迭代),看起来队列方法在这里是最快的,但只是稍微一点,然后列表然后数组花费了大约50%的时间来处理100万个项目

我想我将探索队列堆栈选项

再次感谢;

Oma*_*mar 5

我总是想知道这最后一个对象添加了,并且正在考虑把该对象在位置0(从而推动每个项目下一个索引到最多130项)
......
现在这本身是很简单的我想知道但是,如果有任何其他方式来执行此操作.

是的,通过使用已经构建的结构(队列(第一输入第一输出)),有一种更简单的方法来执行此操作.您主要需要三种方法:

  • Enqueue()将一个对象添加到队列的末尾.

  • Dequeue()返回队列 开头的对象,将其删除.

  • Peek()返回队列 开头的对象而不删除它.

  • 据我所知,OP似乎在寻找一个堆栈(FiLo)而不是一个队列(FiFo) (3认同)