C#集合與泛型集合

來源:互聯網
上載者:User

標籤:ccf   string   預留位置   stack   順序   log   ever   ons   泛型   

看到這個標題,大家應該就知道有泛型集合,就有非泛型集合

既然都是集合,咱們今兒就簡單的來對比講解下

需要記住的不算太多,理解記憶、理解記憶

 2017-11-0411:39:09

C# 泛型集合之非泛型集合類與泛型集合類的對應:

*****ArrayList對應List      

***HashTable對應Dictionary

*****Queue對應Queue

*****Stack對應Stack

SortedList對應SortedList

 

第一  : ArrayList(非泛型集合)  與List(泛型集合)

ArrayList 是數組的複雜版本。ArrayList 類提供在大多數 Collections 類中提供但不在 Array 類中提供的一些功能:

1.Array 的容量是固定的,而 ArrayList 的容量是根據需要自動擴充的。

2.ArrayList 提供添加、插入或移除某一範圍元素的方法。在 Array 中,您只能一次擷取或設定一個元素的值。

3.使用 Synchronized 方法可以很容易地建立 ArrayList 的同步版本。而 Array 將一直保持它直到使用者實現同步為止。

4.ArrayList 提供將唯讀和固定大小封裝返回到集合的方法。而 Array 不提供。

5.Array 提供 ArrayList 所不具有的某些靈活性:

   a.可以設定 Array 的下限,但 ArrayList 的下限始終為零。

   b.Array 可以具有多個維度,而 ArrayList 始終只是一維的。

   c.特定類型(不包括 Object)的 Array 的效能比 ArrayList 好,這是因為 ArrayList 的元素屬於 Object 類型,所以在儲存或檢索實值型別時通常發生裝箱和unboxing。

   d.要求一個數組的大多數情況也可以代之以使用 ArrayList。它更便於使用,並且通常具有與 Object 類型的數組類似的效能。

6.Array 位於 System 命名空間中;ArrayList 位於 System.Collections 命名空間中。

ArrayList類對象方法:

1:Add()向數組中添加一個元素,
2:Remove()刪除數組中的一個元素
3:(int i)刪除數組中索引值為i的元素
4:Reverse()反轉數組的元素
5:Sort()以從小到大的順序排列數組的元素
6:Clone()複製一個數組

一:ArrayList:

ArrayList可以不用指定維數 可動態賦值  賦不同類型值

1 ArrayList arrayList1 = new ArrayList();2              arrayList1.3              arrayList1.Add("a");4              arrayList1.Add(1);5              arrayList1.Add("b");6              Response.Write(arrayList1[1]);

二:Array:

Array的容量是固定的 先指定大小 在賦值

1  Array arrayList2 = Array.CreateInstance(typeof(string), 6);2              arrayList2.SetValue("a", 0);3              arrayList2.SetValue("b", 1);4              Response.Write(arrayList2.GetValue(1));

List泛型集合:

泛型集合List<T>
  泛型最重要的應用就是集合操作,使用泛型集合可以提高代碼重用性,型別安全和更佳的效能。
  List<T>的用法和ArrayList相似,List<T>有更好的型別安全,無須拆,裝箱。
在泛型定義中,泛型型別參數“<T>”是必須指定的,其中T是定義泛型類時的預留位置,其並不是一種類型,僅代表某種可能的類型。在定義時T會被使用的類型代替。泛型集合List<T>中只能有一個參數類型,“<T>”中的T可以對集合中的元素類型進行約束。

eg:
List<T>添加、刪除、檢索元素的方法和ArrayList相似,明顯的特點是不需要像ArrayList那樣裝箱和拆箱。

 1 List < Student > students = new List < Student > (); 2    Student stu1 = new Student(); 3    stu1.Name = "陸小鳳"; 4    stu1.Number = "0801"; 5    stu1.Score = 20; 6    Student stu2 = new Student(); 7    stu2.Name = "西門吹雪"; 8    stu2.Number = "0802"; 9    stu2.Score = 23;10    students.Add(stu1);11    students.Add(stu2);12    Console.WriteLine("集合中的元素個數為{0}", students.Count);13    foreach (Student stu in students)14    {15     Console.WriteLine("/t{0}/t{1}/t{2}", stu.Name, stu.Number, stu.Score);16    }17    students.Remove(stu1);18    Console.WriteLine("集合中的元素個數為{0}", students.Count);19    Console.ReadLine();

List<T>和ArrayList的區別
      List<T>和ArrayList的相同點:添加元素、刪除元素、通過索引訪問元素方法相同。
  List<T>和ArrayList的不同點:
ArrayList可以添加任意類型元素;List<T>對添加的元素具有類型約束;
ArratList添加時裝箱,讀取時拆箱;List<T>不需要裝箱,拆箱操作;

 1 //建立Person對象 2    Person p1 = new Person("張三", 30); 3    Person p2 = new Person("李四", 20); 4    Person p3 = new Person("王五", 50); 5    //建立類型為Person的對象集合 6    List < Person > persons = new List < Person > (); 7    //將Person對象放入集合 8    persons.Add(p1); 9    persons.Add(p2);10    persons.Add(p3);11    //輸出第2個人的姓名12    Console.WriteLine(persons[1].Name);13    foreach (Person p in persons)14    {15     Console.WriteLine("/t{0}/t{1}", p.Name, p.Age);16    }

今天暫時到這裡,慢慢理解,我腦子也腦子有點兒不夠用了,頭疼過去過去就好了

2017-11-04  11:40:11

C#集合與泛型集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.