gpt4 book ai didi

c# - C# 中的循环列表

转载 作者:太空狗 更新时间:2023-10-29 21:16:55 24 4
gpt4 key购买 nike

我对 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# 是否已经为此提供了适当的数据结构?

编辑:以防需要一些上下文。我有一个游戏菜单,我在其中显示了一系列项目,我希望当我按下“下一步”并且我在最后一个时,再次显示第一个项目。

最佳答案

利用 % (remainder) operator您的代码变得非常简单:

void nextItem() {
index++; // increment index
index %= items.Count; // clip index (turns to 0 if index == items.Count)
// as a one-liner:
/* index = (index + 1) % items.Count; */

setItem();
}

void previousItem() {
index--; // decrement index
if(index < 0) {
index = items.Count - 1; // clip index (sadly, % cannot be used here, because it is NOT a modulus operator)
}
// or above code as a one-liner:
/* index = (items.Count+index-1)%items.Count; */ // (credits to Matthew Watson)

setItem();
}

关于c# - C# 中的循环列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33781853/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com