c# удалить все одинаковые объекты из массива (без LINQ) - PullRequest
0 голосов
/ 05 мая 2020

Я не могу удалить один и тот же объект из массива в c#. Последний не удаляется.

Я добавляю объекты в массив, я добавляю их более одного раза.

Когда я пытаюсь удалить их, удаляются не все объекты.

Как удалить все одинаковые объекты.

static void Main(string[] args)
{
    Cirkel c1 = new Cirkel(2);
    Cirkel c2 = new Cirkel(3);

    Figuur f1 = new Figuur();
    f1.Add(c1);
    f1.Add(c1);
    f1.Add(c2);
    f1.Add(c2);

    f1.VerwijderObject(c2);
}

class Figuur
{
    public Figuur[] _Items = new Figuur[0];
    int count = 0;

    public void Add(Figuur figuur)
    {
        count = count + 1;
        Array.Resize(ref _Items, count);
        _Items[count - 1] = figuur;
    }

    public void VerwijderObject(Figuur figuur)
    {
        for (int k = 0; k < _Items.Length; k++)
        {
            if (_Items[k].Equals(figuur))
            {
                for (int i = k; i < (count - 1); i++)
                {
                    _Items[i] = _Items[i + 1];
                }
                count = count - 1;
                Array.Resize(ref _Items, count);
            }
        }
    }
}

1 Ответ

0 голосов
/ 05 мая 2020

По умолчанию Equals сравнивает ссылку и равенство. Вам нужно переопределить метод Equals в классе Cirkel (вы не предоставили код для Cirkel, поэтому не знаете, что он делает).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...