使用列表的新功能。出于自动测试目的,我生成一个不同值的列表。以下是一个值得关注的代码块:
Random rnd = new Random();
List<int> lVars = new List<int>();
while (VarsCount < randVarsCount)
{
if(VarsCount > 0)
{
while(lVars.Distinct().Count() != lVars.Count())
{
lRowVars.Insert(VarsCount, rnd.Next(1, 11)); //problem code
}
}
lVars.Add(rnd.Next(1, 11));
MessageBox.Show(lRowVars[aRowVarsCounter].ToString());
aRowVarsCounter++;
}
基本上,我如何检查添加的int是否与列表的所有内容匹配(因为我的代码不起作用)....我已经尝试了其他一些代码,但最终还是ALOT额外的代码和循环;通常当我觉得我做了多余的事情时,我发现有一种更简单的方法。
答案 0 :(得分:2)
在思考&#34;列出不同的值&#34;时,请考虑&#34;设置&#34;相反,如果你不关心订购(这里似乎是这种情况)。集合最多只包含一次给定值。你可以做点什么
int maxRnd = 11;
int desiredCount = 4;
if (desiredCount > maxRnd) throw new Exception("Impossible.");
HashSet<int> unique = new HashSet<int>();
while (unique.Count < desiredCount)
{
unique.Add(rnd.Next(1, maxRnd));
}
// If needed, convert to a list
var uniqueList = unique.ToList();