我有一种情况,我不太确定从哪里开始寻找。我一直在寻找过去的四个小时,我找不到任何可以做我想做的事情。
我有八个控制个别灯光的物体。当事件发生时,我生成它的ID,将该值存储在第一个可用对象中,然后启动一个方法。我还将ID存储在列表中,并将对象编号与该列表的索引号相匹配。我想要做的是根据匹配项是否从列表中删除,更新和旋转这八个对象。
示例:八个对象中有五个处于活动状态,我从列表为0的列表中删除一个项目。对象0停止,然后对象1移动到对象0,然后移动到2到1,3到2,等等。 / p>
所以我的问题是我应该用什么术语来帮助我实现这个目标?我对c#相对较新,今天我的研究结果我只是想知道什么是正确的问题。
如果我想做的事情不可能只是这样说,我会在我的最后提出一个更简单的程序。或者,如果你有解决这种情况的方法,我很满意。
答案 0 :(得分:0)
我认为您只是在描述[堆栈数据结构](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)。请查看它,看看它是否是您正在寻找的内容。
堆栈没有"旋转"对象,但当你删除顶部项目时,"索引"所有其他项目将按照您的描述减少。在您的示例中,似乎列表最终将变为空(在8个事件之后)与堆栈一致 - 但是不清楚为什么会调用此轮换。
如果堆栈是您正在寻找的,那么BCL定义了一个可以执行此操作的通用Stack<T>
。使用Push()
操作将项添加到堆栈中,这会产生增加结构中所有其他项的索引的副作用。双重Pop
操作会从集合中删除顶部项目,并按照您的描述递减其他项目的索引。