当我的应用程序启动时,我会这样做:
Random rand = new Random();
然后我有了创建短语列表的代码。我想要做的是只选择该列表中其中一行的 PhraseId。我正在尝试使用 rand 但对如何执行此操作感到非常困惑。这是我目前所拥有的:
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;
有人可以为我确认一下,这是正确的做法吗?无论列表中有多少行,它都可以工作吗?如果只有一个元素,它会选择那个元素还是我应该为这种情况编写不同的代码?
最佳答案
改变
var indx = (int)rand.Next(phrases.Count) + 1;
到:
var indx = rand.Next(phrases.Count);
0 <= rand.Next(phrases.Count) < phrases.Count
as index stars from 0 but + 1
in rand.Next(phrases.Count) + 1
将排除 0 索引并包括 indx == phrases .Count
超出范围。
关于c# - 如何从数组中随机选择一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52902540/