📅  最后修改于: 2023-12-03 14:40:29.709000             🧑  作者: Mango
在C#中,可以使用ArrayList来存储对象列表。有时候需要从这个列表中删除特定的对象。本文将介绍如何从ArrayList中删除第一次出现的特定对象。
在继续之前,需要对以下两个知识点有所了解:
使用ArrayList的Remove方法可以删除ArrayList中特定的对象。Remove方法会删除第一次出现的对象,而不是全部出现的对象。
ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
list.Add(3);
list.Add(1);
list.Remove(1); // 删除第一次出现的1
在上面的示例中,最后一个Remove方法只会删除第一次出现的1,而不是全部的1。
如果对象比较不是使用对象的Equals方法,可以自定义一个IComparer
class PersonComparer : IComparer<Person>
{
public int Compare(Person x, Person y)
{
if (object.ReferenceEquals(x, y))
{
return 0;
}
if (x == null)
{
return -1;
}
if (y == null)
{
return 1;
}
return x.Id.CompareTo(y.Id);
}
}
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
在上面的示例中,使用PersonComparer类来比较Person对象的ID属性。可以使用以下代码来删除第一次出现的Person对象。
ArrayList list = new ArrayList();
list.Add(new Person { Id = 1, Name = "Alice" });
list.Add(new Person { Id = 2, Name = "Bob" });
list.Add(new Person { Id = 3, Name = "Charlie" });
list.Add(new Person { Id = 1, Name = "David" });
Person p = new Person { Id = 1, Name = "Tom" };
PersonComparer comparer = new PersonComparer();
int index = list.IndexOf(p);
if (index >= 0)
{
list.RemoveAt(index);
}
在上面的示例中,首先使用IndexOf方法获取要删除的Person对象在ArrayList中的索引位置,然后使用RemoveAt方法来删除这个对象。
本文介绍了从ArrayList中删除第一次出现的特定对象的两种方法。第一种方法使用ArrayList的Remove方法来删除对象。第二种方法使用自定义的比较器来比较对象是否相同,然后使用IndexOf和RemoveAt方法来删除特定的对象。