Контрольный список для дубликатов - PullRequest
0 голосов
/ 10 января 2019

Я уже проверил много вопросов здесь, в Переполнении стека, но не смог найти что-то похожее на мою проблему ..

Я генерирую 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 голосов
/ 10 января 2019

Вместо списка поплавков вы должны использовать список пар, например, используя кортежи или ваш собственный класс, где каждый элемент в такой паре имеет 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. В качестве альтернативы вы также можете вручную создать новую Tuple, представленную в .NET 4.0, которая, однако, не имеет именованных свойств:

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