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