那个是引用类型的问题,ArrayList.Contains(object)里面的object比较的是引用(就像是一个指针),object的引用要指向的实际值一致才返回true。
要比较对像的实际值要用Equals(object),当然,在你的对像里重载Equals(object)函数,例如:
public override bool Equals(object obj)
{ if(((yourClassName)object).name==this.name)
return true;
else
return false;
}
然后移除重复值如下:
for (int ii = 0; ii < list.Count; ii++)
{
for (int jj = ii + 1; jj < list.Count; jj++)
{
if(list[ii].Equals(list[jj]))
list.RemoveAt(jj);
jj--;//由于刚刚删除了一个,所以jj要后退一个
}
}