本文實例講述了C#入門教程之集合ArrayList用法。分享給大家供大家參考,具體如下:
.NET Framework提供了用于數據存儲和檢索的專用類,這些類統稱集合。這些類提供對堆棧、隊列、列表和哈希表的支持。大多數集合類實現系統的接口。下面我們主要來講一下ArrayList。
ArrayList是命名空間Systrm.Collections下的一部分,它是使用大小可按需動態增加的數組實現IList接口。
ArrayList的容量是ArrayList可以保存的元素數。ArrayList的默認初始容量為0.隨著元素添加到ArrayList中,容量會根據需要通過重新分配自動增加。使用證書索引可以訪問此集合中的元素。此集合中的索引從零開始。
下面我們先來看一個例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections; namespace 集合{ //動物類 public abstract class Animal { protected string name; //動物的名字 public string Name { get { return name; } set { name = value; } } public Animal() { name= "The animal with no name" ; } public Animal( string newName) { name=newName; } public void Feed() //繁殖后代 { Console.WriteLine( "{0} has been fed." ,name); } } //奶牛類 public class Cow : Animal { public Cow( string newName): base (newName) { } public void Milk() //產牛奶 { Console.WriteLine( "{0} has been milked." , name); } } //母雞類 public class Chicken : Animal { public Chicken( string newName): base (newName) { } public void LayEgg() //下蛋 { Console.WriteLine( "{0} has laid an egg." , name); } } class Program { static void Main( string [] args) { //用數組的方法實現 Console.WriteLine( "Create an Array type collection of Animal object and use it:" ); Animal[] animalArray = new Animal[2]; Cow myCow1 = new Cow( "Deirdre" ); animalArray[0] = myCow1; animalArray[1] = new Chicken( "Ken" ); foreach (Animal myAnimal in animalArray ) { Console.WriteLine( "New {0} object added to Array collection,Name={1}" , myAnimal.ToString(), myAnimal.Name); } Console.WriteLine( "Array collection contains {0} objects." ,animalArray .Length ); animalArray[0].Feed(); ((Chicken)animalArray[1]).LayEgg(); Console.WriteLine(); //用集合的方法實現 Console.WriteLine( "Create an ArrayList type collection of Animal objects and use it;" ); ArrayList animalArrayList = new ArrayList(); Cow myCow2 = new Cow( "HayLey" ); animalArrayList.Add(myCow2); animalArrayList.Add( new Chicken( "Roy" )); foreach (Animal myAnimal in animalArrayList) { Console.WriteLine( "New {0} object added to ArrayList collection,Name={1}" , myAnimal.ToString(), myAnimal.Name); } Console.WriteLine( "ArrayList collection contains {0} objects." , animalArrayList.Count); ((Animal)animalArrayList[0]).Feed(); ((Chicken)animalArrayList[1]).LayEgg(); Console.WriteLine(); } } } |
集合的創建
對于簡單的數組來說,只有用固定的大小來初始化數組,才能使用它。
1
|
Animal[] animalArray = new Aimal[2]; |
而ArrayList集合不需要初始化其大小
1
|
ArrayList animalArrayList = new ArrayList(); |
這個類還有另外兩個構造函數。第一個構造函數把現有的集合作為一個參數,把現有集合的內容復制到新實例中;而另一個構造函數通過一個參數設置集合的容量(capacity)。這個容量用一個int值指定,設置集合中可以包含的初始項數。但這并不是真實的容量,因為如果集合中的項數超過了這個值,容量就會自動增加一倍。
對于ArrayList集合,它沒有現成的項,也沒有null引用的項。我們使用ArrayList對象的Add()方法添加新項:
1
2
3
|
Cow myCow2 = new Cow( "Hayley" ); anmialArrayList.Add(myCow2); anmialArrayList.Add( new Chicken( "Roy" )); |
ArrayList對象支持IEnumerable接口,這個接口的唯一方法GetEnuumerator()可以迭代集合中的各項。所以可以與foreach一起使用
1
2
3
4
|
foreach (Animal myAnimal in animalArrayList) { Console.WriteLine( "New {0} object added to ArrayList collection,Name = {1}" ,myAnimal.Tostring(),myAnimal.Name); } |
ArrayList集合是System.Object對象的集合(通過多態性賦給Animal對象),所以必須用所有的項進行數據類型轉換:
1
2
|
((Animal)animalArrayList[0]).Feed(); ((Chichen)animalArrayList[1]).LayEgg(); |
我們可以使用Remove()和RemoveAt()方法刪除項,這兩個方法是在ArrayList類中實現的IList接口的一部分。它們分別根據項的引用或索引從集合中刪除項:
1
2
|
animalArrayList.RemoveAt(0); animalArrayList.Remove(myCow2); |
ArrayList集合可以用AddRange()方法一次添加好幾個項。這個方法接受帶有ICollection接口的任何對象,包括數組:
1
|
animalArrayList.AddRange(animalArray); |
AddRange()方法不是ArrayList提供的任何接口的一部分。這個方法專用于ArrayList類,
希望本文所述對大家C#程序設計有所幫助。