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相等的元素存在。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM