【发布时间】:2015-11-18 13:53:07
【问题描述】:
我对 C# 不是很有经验。我正在尝试建立循环列表,我已经这样做了:
public List<string> items = new List<string> {"one", "two", "three"};
private int index = 0;
void nextItem() {
if (index < items.Count - 1)
index += 1;
else
index = 0;
setItem();
}
void previousItem() {
if (index > 0)
index -= 1;
else
index = items.Count - 1;
setItem();
}
void Update() {
if (Input.GetKeyDown(KeyCode.RightArrow)) nextItem();
else if (Input.GetKeyDown(KeyCode.LeftArrow)) previousItem();
}
但现在我想知道:我是在重新发明轮子吗? C# 是否已经为此提供了适当的数据结构?
编辑:如果需要一些上下文。我有一个游戏菜单,其中显示了一系列项目,我希望当我按“下一步”并在最后一个时,再次显示第一个项目。
【问题讨论】:
-
您的列表不是循环的,只是索引它的方法。你只是想通过一个环绕的列表来索引,还是你真的想要一个循环缓冲区?
-
在这里使用队列要好得多。
-
我有一个游戏,我在其中显示菜单中的项目列表。当我到达最后一项时,我想再次显示第一项。
-
@M.kazemAkhgary 真的吗?
previousItempreviousItem? -
可以将下一个索引的计算简化为
index = (index+1)%items.Count;。同理,前面索引的计算可以简化为index = (items.Count+index-1)%items.Count;(虽然“简化”在这个语境中可能是一个相对术语……)
标签: c#