传统的ArrayList的Contains方法用于检查列表中是否包含指定的对象,但它却不能正确地检查包含对象的情况。这是因为Contains方法是使用对象的Equals方法,并不考虑对象的参考相等性。
所以,如果要查找包含对象的情况,我们需要使用IndexOf方法,并指定对象的引用相等性比较器。以下是一个使用Lambda表达式实现的示例代码:
ArrayList list = new ArrayList();
Foo foo1 = new Foo();
Foo foo2 = new Foo();
list.Add(foo1);
list.Add(foo2);
bool contains = list.IndexOf(foo2, EqualityComparer.Default.Equals) >= 0;
在上面的示例中,我们使用Lambda表达式EqualityComparer
有了这个解决方法,我们就可以正确地检查包含对象的情况。