если List a равно List B не работает должным образом - PullRequest
0 голосов
/ 25 сентября 2018

У меня проблема со списками, у меня есть два списка, первое значение уже установлено, второе добавляет число при нажатии кнопки.

Код работает, пока эту часть я не понимаю.
Код проверяет, равны ли значения второго списка (UserList) первому списку (ButtonList), если нет, очищает UserList для повторенияпроцесс, но, если они равны, загружает сцену и печатает сообщение.
Проблема здесь в том, что, даже если UserList равен ButtonList, игра очищает UserList.
Как я вижу, когда онаимеет 8, и вы добавляете число, список быстро становится понятным.
Я не знаю, что здесь происходит.Не могли бы вы помочь мне, пожалуйста?

private void Update()
    {
        string[] the_array = UserList.Select(i => i.ToString()).ToArray();
        string OrderString = string.Join(", ", the_array);
        string[] thi_array = ButtonList.Select(i => i.ToString()).ToArray();
        string OrdersString = string.Join(", ", thi_array);
        Debug.Log("ButtonList Count Is  " + ButtonList.Count + "UserList Count Is" + UserList.Count);
        print("UserList Is " + OrderString + "ButtonList Is " + OrdersString);
        if (UserList.Count == 9)
        {
            if (UserList == ButtonList)
            {
                //Sound
                BehaviourModel B = new BehaviourModel();
                B.Counter++;
                if (B.Counter < 10)
                {
                    SceneManager.LoadScene(B.SceneArray[B.Counter]);
                }
                else if (B.Counter > 10)
                {
                    SceneManager.LoadScene("MainMenuScene");
                }
            }
            else if (UserList != ButtonList)
            {
                UserList.Clear();
                Debug.Log("Fail");
            }
        }
    }

1 Ответ

0 голосов
/ 25 сентября 2018

Для сравнения содержимого двух списков вы можете использовать метод расширения SequenceEqual linq.Это вернет true, если оба списка содержат одинаковые элементы в одинаковом порядке.Возможно, было бы неплохо использовать в каждом списке предложение OrderBy, чтобы вначале они были одинаково упорядочены, и, поскольку вы имеете дело со строками, вы можете использовать сравнение без учета регистра (этодо вас, однако):

// Case-insensitive comparison, using OrderBy to ensure both lists are similarly ordered
if (UserList.OrderBy(u => u).SequenceEqual(ButtonList.OrderBy(b => b), 
    StringComparer.OrdinalIgnoreCase))
{ 
    // The lists contain the same contents
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...