当我的应用程序启动时,我这样做:
Random rand = new Random();
然后我有这段代码可以创建短语列表。我想做的就是选择该列表中仅一行的PhraseId。我正在尝试兰特,但对如何执行此操作感到非常困惑。这是我到目前为止的内容:
var phrases = App.selectedPhrases.All.Where(x => x.Points > 1).ToList();
if (phrases.Count == 0) return;
var indx = (int)rand.Next(phrases.Count) + 1;
var id = phrases[indx].PhraseId;
有人可以帮我确认一下,这是正确的方法吗,不管列表中有多少行,它是否都能工作?如果只有一个元素,它会选择那个还是我应该针对这种情况使用不同的代码?
答案 0 :(得分:4)
只是改变
var indx = (int)rand.Next(phrases.Count) + 1;
收件人:
var indx = rand.Next(phrases.Count);
0 <= rand.Next(phrases.Count)<个短语.Count
因为索引星从0开始,但是+ 1
中的rand.Next(phrases.Count) + 1
会排除0索引,并且会包含indx == phrases.Count
,这超出了范围。