服务器之家

服务器之家 > 正文

C#入门教程之集合ArrayList用法详解

时间:2022-01-10 14:24     来源/作者:傻丫头与科技

本文实例讲述了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();
    }
  }
}

C#入门教程之集合ArrayList用法详解

集合的创建

对于简单的数组来说,只有用固定的大小来初始化数组,才能使用它。

?
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#程序设计有所帮助。

标签:

相关文章

热门资讯

蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整
蜘蛛侠3英雄无归3正片免费播放 蜘蛛侠3在线观看免费高清完整 2021-08-24
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部

785
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40