List < T > Ошибка при удалении

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

List < T > Ошибка при удалении

Сообщение BigPando 16 фев 2013, 13:36

Подскажите ка бороться с ошибкой ?
Collection was modified; enumeration operation may not execute.

При удалении элемента списка выплевывает ошибку, все работает, но напрягает.
Лист гоняю через foreach

(c#) ^:)^
BigPando
UNец
 
Сообщения: 11
Зарегистрирован: 07 мар 2012, 14:14

Re: List < T > Ошибка при удалении

Сообщение pod4444 16 фев 2013, 14:04

Удалять объекты из листа во время работы foreach не комильфо
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: List < T > Ошибка при удалении

Сообщение BigPando 16 фев 2013, 14:13

pod4444 писал(а):Удалять объекты из листа во время работы foreach не комильфо

угумсь Я это уже понял.
Я в c# и в unity3D нуб, около месяца сижу.
Вот и хотел узнать как надо правильно удалять элементы массива?
BigPando
UNец
 
Сообщения: 11
Зарегистрирован: 07 мар 2012, 14:14

Re: List < T > Ошибка при удалении

Сообщение pod4444 16 фев 2013, 14:36

Массив и списки разные вещи, их не надо путать.
например можно вот так:
Синтаксис:
Используется csharp
namespace TestSolution
{
    using UnityEngine;
    using System.Collections.Generic;

    public class ListTest : MonoBehaviour
    {
        private List<Vector3> ListOfNumbers = new List<Vector3>();

        private void Awake()
        {
            Vector3[] tempArray = ListOfNumbers.ToArray();
            foreach (Vector3 temp in tempArray)
            {
                if (temp.magnitude < 5)
                {
                    ListOfNumbers.Remove(temp);
                }
            }
        }
    }
}
 
Аватара пользователя
pod4444
Старожил
 
Сообщения: 721
Зарегистрирован: 20 янв 2012, 22:02
Откуда: Воронеж
Skype: pod4444
  • Сайт

Re: List < T > Ошибка при удалении

Сообщение BigPando 16 фев 2013, 14:55

List.ToArray Спасло меня .
:-bd


Пробовал через for была ошибка но другого рода.
Интуитивно догадывался что нужно как то через временный массив или лист, но как реализовать не знал.
думал что одной строкой скопировать нельзя.
Спасибо.
BigPando
UNец
 
Сообщения: 11
Зарегистрирован: 07 мар 2012, 14:14


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13