c#从数组中删除所有相同的对象(没有LINQ)

问题描述 投票:0回答:1

我无法从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);
         }
     }
  }

}
c# arrays
1个回答
0
投票

默认情况下,等于等于进行参考等于比较。您需要重写Figuur类中的Equals方法以使代码正常工作。即使对于Cirkel类,您可能也需要重写相同的内容(您尚未提供Cirkel的代码,因此不知道它的作用)。

© www.soinside.com 2019 - 2024. All rights reserved.