久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Array,、List和ArrayList的區(qū)別與

 生命隨時光流逝 2019-09-01
版權(quán)聲明:本文為博主原創(chuàng)文章,,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明,。

Array

定義: 

public abstract class Array:ICloneable, IList, ICollection, IEnumerable, IStructuralComparable, IStructuraEquatable


    數(shù)組在內(nèi)存中是連續(xù)存儲的,,所以它的索引速度是非常的快,而且賦值與修改元素也很簡單

 

  1. string[] s = new string[3];
  2. //賦值
  3. s [0] = "a";
  4. s [1] = "b";
  5. s [2] = "c";
  6. //修改
  7. s [0] = "a1";

數(shù)組在倆數(shù)據(jù)中插入數(shù)據(jù)是很麻煩的,,還有我們在聲明數(shù)組的時候,,必須同時指明數(shù)組的長度,數(shù)組的長度過長,,會造成內(nèi)存浪費,,數(shù)組和長度過短,會造成數(shù)據(jù)溢出的錯誤,。

 

ArrayList

 

      ArrayList是.Net Framework提供的用于數(shù)據(jù)存儲和檢索的專用類,,它是命名空間System.Collections下的一部分。它的大小是按照其中存儲的數(shù)據(jù)來動態(tài)擴(kuò)充與收縮的,。所以,,我們在聲明ArrayList對象時并不需要指定它的長度。ArrayList繼承了IList接口,,所以它可以很方便的進(jìn)行數(shù)據(jù)的添加,,插入和移除.比如:

 

  1. ArrayList list = new ArrayList ();
  2. //新增數(shù)據(jù)
  3. list.Add ("abc");
  4. list.Add (123);
  5. //修改數(shù)據(jù)
  6. list [2] = 345;
  7. //移除數(shù)據(jù)
  8. list.RemoveAt (0);
  9. //插入數(shù)據(jù)
  10. list.Insert (0, "hello world");

 

    ArrayList存在不安全類型與裝箱拆箱的缺點:

    在list中,我們不僅插入了字符串"abc",,而且又插入了數(shù)字123,。這樣在ArrayList中插入不同類型的數(shù)據(jù)是允許的。因為ArrayList會把所有插入其中的數(shù)據(jù)都當(dāng)作為object類型來處理,。這樣,,在我們使用ArrayList中的數(shù)據(jù)來處理問題的時候,很可能會報類型不匹配的錯誤,,也就是說ArrayList不是類型安全的,。既使我們保證在插入數(shù)據(jù)的時候都很小心,都有插入了同一類型的數(shù)據(jù),,但在使用的時候,,我們也需要將它們轉(zhuǎn)化為對應(yīng)的原類型來處理,。這就存在了裝箱與拆箱的操作,會帶來很大的性能損耗,。

List

 

    List類是ArrayList類的泛型等效類(ArrayList繼承了List接口)。它的大部分用法都與ArrayList相似,,因為List類也繼承了IList接口,。最關(guān)鍵的區(qū)別在于,在聲明List集合時,,我們同時需要為其聲明List集合內(nèi)數(shù)據(jù)的對象類型,。

 

  1. List<int> list = new List<int>();
  2. //新增數(shù)據(jù)
  3. list.Add(123);
  4. //修改數(shù)據(jù)
  5. list[0] = 345;
  6. //移除數(shù)據(jù)
  7. list.RemoveAt(0);

拓展

		ArrayList list1 = new ArrayList ();

 

    這句創(chuàng)建了一個ArrayList的對象后把上溯到了List。此時list是一個List對象了,,有些ArrayList有但是List沒有的屬性和方法,,它就不能再用了。而ArrayList list=new ArrayList();創(chuàng)建一對象則保留了ArrayList的所有屬性,。

    問題就在于List有多個實現(xiàn)類,,如LinkedList或者Vector等等,現(xiàn)在你用的是ArrayList,,也許哪一天你需要換成其它的實現(xiàn)類呢,?,這時你只要改變這一行就行了:List list = new LinkedList(); 其它使用了list地方的代碼根本不需要改動,。假設(shè)你開始用 ArrayList list = new ArrayList(), 這下你有的改了,,特別是如果你使用了 ArrayList特有的方法和屬性。如果沒有特別需求的話,最好使用List list = new LinkedList(); 便于程序代碼的重構(gòu). 這就是面向接口編程的好處,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多