【发布时间】:2015-10-27 22:59:33
【问题描述】:
刚开始使用列表。出于自动化测试的目的,我正在生成一个不同值的列表。以下是关注的代码块:
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 是否与所有列表匹配(因为我的代码不起作用)....我尝试了一些其他代码,但最终是很多额外的代码和循环;通常当我觉得我在做一些多余的事情时,我会发现有一个更简单的方法。
【问题讨论】:
-
如果值集已知且固定;创建一个数组(或其他)并打乱它;如果不使用 HashSet (或类似的)来确保它只包含每个项目一次(如果它已经存在或不存在,则它的 Add 方法返回)
-
你到底想做什么? “问题代码”的问题是什么?如果你想添加超过 10 个值,你可能会遇到麻烦。
-
你的内部 while 循环是错误的。您添加重复项,然后测试是否存在重复项并停止。在插入新项目之前,您需要测试该值是否存在
-
@jdweng 我知道...这正是我想要的...尝试查看项目是否存在而不必做一堆其他循环...这可能吗?
-
正常的方法是制作一个二维列表 2 x 11。第 1 列添加数字 1 到 11。第 2 列添加随机数。然后按随机数排序。这样你就不会得到重复。