欧美性猛交xxx嘿人猛交_又色又爽又高潮免费观看_精品国产一区二区三区久久影院_青娱乐极品视觉盛宴国产视频

技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統
網站運營

贊助商

分類目錄

贊助商

最新文章

搜索

asp.net官方建議使用List而不是ArryList

作者:admin    時間:2023-5-5 8:44:28    瀏覽:

在C#中,ArrayListList都能夠存儲一組對象,但它們是有區別的,微軟官方甚至建議使用List而不是ArryList,這是本文要說的重點,List對比ArrayList有哪些優勢呢?

在了解List對比ArrayList有哪些優勢之前,我們先來看看ArrayListList的區別。

ArrayList

ArrayList處于System.Collections命名空間下,如果需要使用需要引入。同時繼承了IList接口,提供了數據檢索和存儲。ArrayList對象的大小是按照其中存儲的數據來動態擴充與收縮的。所以,在聲明ArrayList對象時并不需要指定它的長度。

ArrayList foo = new ArrayList();

// 增加
foo.Add("Hello");
foo.Add("World");

// 刪除
foo.RemoveAt("0");

// 修改
foo[0] = "hello";

// 插入數據
foo.Insert(0, " ");

如此來看,ArrayList解決了所有數組的痛點,那為什么還要有List呢?

我們如果注意觀察,會發現,foo.Add這個方法參數類型是Object,也就是說我們可以給ArrayList添加任意類型的數據,如果我們使用不慎,會發生類型不匹配異常,也就是說ArrayList是不安全類型。在存儲或檢索值類型時通常發生裝箱和取消裝箱操作,帶來很大的性能耗損。我們總結一下Arrayist的缺點:

  • 不安全類型
  • 裝箱拆箱性能損耗高

List

因為ArrayList存在不安全類型與裝箱拆箱的缺點,所以出現了泛型的概念。List類是ArrayList類的泛型等效類,它的大部分用法都與ArrayList相似,因為List類也繼承了IList接口。最關鍵的區別在于,在聲明List集合時,我們同時需要為其聲明List集合內數據的對象類型。

List<string> foo = new List<string>();

// 增加
foo.Add("Hello");

// 修改
foo[0] = "hello";

// 刪除
foo.RemoveAt(0);

上例中,我們可以看到,我們在聲明時需要用<Strintg>形式傳入類型,這樣,我們往List集合中插入String數組Hello,IDE就會報錯,且不能通過編譯。這樣就避免了前面講的類型安全問題與裝箱拆箱的性能問題了。

為什么選擇使用List,而不是ArryList

下面是官網的相關建議

重要的

我們不建議您使用該類ArrayList進行新的開發。相反,我們建議您使用通用的List<T>類。ArrayList類旨在保存異構的對象集合。但是,它并不總是提供最佳性能。相反,我們建議如下:

  • 對于異類對象集合,請使用List<Object>(在 C# 中)或List(Of Object)(在 Visual Basic 中)類型。
  • 對于同類對象集合,請使用List<T>類。有關這些類的相對性能的討論,請參閱List<T>參考主題中的性能注意事項。有關使用通用而非非通用集合類型的一般信息,請參閱 GitHub 上不應使用非通用集合。

List比較,ArrayList有一個優點,就是它可以存儲類型不一樣的對象數據,而List泛型集合類,其中T必須是對他存儲元素對象的約束,必須一致性!

ArrayList存儲的對象如果是值類型,那就涉及到裝箱操作,這個對程序性能影響很大,所以不到萬不得已,還是不要用!

而且ArrayList里面存放元素對象類型都不一致,在C#(強類型語言)中處理時,還需要判斷,還要涉及到頻繁裝箱拆箱,這對性能影響很大。

List的特點是:只能添加一種數據類型,可以是基本的值類型也可以實引用類型,一旦數據類型確定,不可更改!

List做數據處理時,完全可以采用強大的Linq,處理起來那是相當的方便。

總結

本文介紹了ListArryList的特點和區別,以及List對比ArrayList有哪些優勢。

在決定使用List<T>還是使用ArrayList類時,記住List<T>類在大多數情況下執行得更好并且是類型安全的。如果List<T>對類的類型T使用引用類型,則兩個類的行為是完全相同的。但是,如果對類型T使用值類型,則需要考慮實現和裝箱問題。

相關文章

標簽: List方法  Array  ArryList  asp.net  CSharp  
x