更优雅的方式将索引更新为循环列表?

Nom*_*Sim 4 c#

我有一个用户将迭代的问题列表,他们可以从任何问题开始,但他们确实有他们的命令,所以为了做到这一点,我只是维护一个索引到数组并增加它如下:

CurrentQuestion = (++CurrentQuestion < questions.Length) ? CurrentQuestion : 0;
Run Code Online (Sandbox Code Playgroud)

这里发生的事情不一定明显,是否有更优雅的方式来做到这一点?

Lou*_*nco 12

我强烈厌恶++在变量中使用变量,然后在同一语句中再次使用该变量.我相信这行在C#中运行良好,但是这样的行在C/C++中是未定义的,所以它们为我举起了一个标志.我会比较喜欢

CurrentQuestion = (CurrentQuestion+1) % questions.Length;
Run Code Online (Sandbox Code Playgroud)

我认为这是在C语言中进行时钟算术的惯用方法.

  • 你必须测试'question.Length'是否大于零,否则你会得到一个例外. (2认同)