检查清单是否重复

时间:2019-01-10 14:26:50

标签: c# list unity3d duplicates

我已经在Stack Overflow中检查了很多问题,但是找不到与我的问题类似的东西。

每次单击按钮时,我都会生成2个随机数,并且尝试将这2个数字保存在列表中,以便每次单击按钮时都可以检查重复的数字。

例如,在第一次运行中,我得到“ 5”和“ 8”,在x次之后,我再次得到了“ 5”和“ 8”的组合,因此我想防止这种情况。

firstNum = Mathf.RoundToInt(Random.Range(min, max));
secondNum = Mathf.RoundToInt(Random.Range(min, max));

private void AddingMethod(float firstNumber, float secondNumber)
{ 
    questionNumbersList.AddRange(new float[] { firstNumber, secondNumber });
    for (int i = 0; i < questionNumbersList.Count; i++)
    {
        Debug.Log("Position " + i + " with list number: " + questionNumbersList[i]);
    }
}

我不确定如何检查两个数字的清单,看看是否已经得到'5','8'跳过它并生成两个新数字。

1 个答案:

答案 0 :(得分:2)

您应该使用成对列表来代替浮点列表,例如通过使用元组或您自己的类,其中这样的对中的每个元素都有一个firstNumber和一个secondNumber

var list = new List<(float firstNumber, float secondNumber)>();
var firstNumber = ...
var secondNumber = ...
if(list.Contains((firstNumber, secondNumber)))
    // alredy contained, create new pair ...
else
    list.Add((firstNumber, secondNumber));

以上要求C#7。另外,您也可以手动创建.NET 4.0上引入的新Tuple,但是它没有命名属性:

var list = new List<Tuple<float, float>>();
list.Add(Tuple.Create(firstNumber, secondNumber));