[转载]List的IndexOf方法和Remove方法 – 龙玺 – 博客园.
List<T>的IndexOf()方法
如果T是值类型的,就按照比较值的方法从列表的第一个元素开始逐个匹配,如果T是引用类型,就比较引用是否相同
举例如下:
class A { public int x; public A( int x) { this .x = x; } } List<A> listA = new List<A>(); listA.Add( new A(3) ); listA.Add( new A(4) ); listA.Add( new A(5) ); listA.Add( new A(54) ); Console.WriteLine( listA.IndexOf( new A(3) ) ); |
自定义的类是引用类型,因此IndexOf按照比较引用的方式查找元素,当然找不到,打印-1,如果A被定义成结构体,则可以找到该元素,打印0
Remove方法也是这个道理,移除的方式取决于T的类型
只是HashSet<T>和List<T>的Remove方法稍有不同:
HashSet<T>中不允许有重复元素而List<T>允许,HashSet<T>调用Remove方法后 如果移除成功,就可以判断这个集合中已经不存在刚刚被移出去的元素,而List<T>调用Remove(t1)方法后只移除掉第一个匹配到的 元素,不能保证此集合中没有其他的与t1相等的元素存在。