全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

本文实例讲述了C#入门教程之集合ArrayList用法。分享给大家供大家参考,具体如下:

.NET Framework提供了用于数据存储和检索的专用类,这些类统称集合。这些类提供对堆栈、队列、列表和哈希表的支持。大多数集合类实现系统的接口。下面我们主要来讲一下ArrayList。

ArrayList是命名空间Systrm.Collections下的一部分,它是使用大小可按需动态增加的数组实现IList接口。

ArrayList的容量是ArrayList可以保存的元素数。ArrayList的默认初始容量为0.随着元素添加到ArrayList中,容量会根据需要通过重新分配自动增加。使用证书索引可以访问此集合中的元素。此集合中的索引从零开始。

下面我们先来看一个例子:

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();
    }
  }
}

集合的创建

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

Animal[] animalArray = new Aimal[2];

而ArrayList集合不需要初始化其大小

ArrayList animalArrayList = new ArrayList();

这个类还有另外两个构造函数。第一个构造函数把现有的集合作为一个参数,把现有集合的内容复制到新实例中;而另一个构造函数通过一个参数设置集合的容量(capacity)。这个容量用一个int值指定,设置集合中可以包含的初始项数。但这并不是真实的容量,因为如果集合中的项数超过了这个值,容量就会自动增加一倍。

对于ArrayList集合,它没有现成的项,也没有null引用的项。我们使用ArrayList对象的Add()方法添加新项:

Cow myCow2 = new Cow("Hayley");
anmialArrayList.Add(myCow2);
anmialArrayList.Add(new Chicken("Roy"));

ArrayList对象支持IEnumerable接口,这个接口的唯一方法GetEnuumerator()可以迭代集合中的各项。所以可以与foreach一起使用

foreach (Animal myAnimal in animalArrayList)
{
  Console.WriteLine("New {0} object added to ArrayList collection,Name = {1}",myAnimal.Tostring(),myAnimal.Name);
}

ArrayList集合是System.Object对象的集合(通过多态性赋给Animal对象),所以必须用所有的项进行数据类型转换:

((Animal)animalArrayList[0]).Feed();
((Chichen)animalArrayList[1]).LayEgg();

我们可以使用Remove()和RemoveAt()方法删除项,这两个方法是在ArrayList类中实现的IList接口的一部分。它们分别根据项的引用或索引从集合中删除项:

animalArrayList.RemoveAt(0);
animalArrayList.Remove(myCow2);

ArrayList集合可以用AddRange()方法一次添加好几个项。这个方法接受带有ICollection接口的任何对象,包括数组:

animalArrayList.AddRange(animalArray);

AddRange()方法不是ArrayList提供的任何接口的一部分。这个方法专用于ArrayList类,

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#字符串操作技巧总结》、《C#数组操作技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。


# C#  # 集合  # ArrayList  # C#使用JArray和JObject封装JSON对象  # C#实现Array  # List  # Dictionary相互转换  # 详解c# 数组(Array)  # 详解C#中Dictionary<TKey  # TValue>的存储结构  # C#创建安全的字典(Dictionary)存储结构  # C#创建安全的栈(Stack)存储结构  # C#中Array的存储结构简单介绍  # 操作技巧  # 程序设计  # 就会  # 是在  # 相关内容  # 第一个  # 不需要  # 可以用  # 它是  # 感兴趣  # 这两个  # 数据结构  # 给大家  # 作为一个  # 但这  # 可以使用  # 好几个  # 一倍  # 更多关于  # 所述 


相关文章: 如何快速搭建高效可靠的建站解决方案?  c# await 一个已经完成的Task会发生什么  如何制作算命网站,怎么注册算命网站?  建站之星伪静态规则如何正确配置?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  如何用y主机助手快速搭建网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  SQL查询语句优化的实用方法总结  如何破解联通资金短缺导致的基站建设难题?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  如何快速搭建自助建站会员专属系统?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  免费网站制作appp,免费制作app哪个平台好?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Python多线程使用规范_线程安全解析【教程】  非常酷的网站设计制作软件,酷培ai教育官方网站?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  建站之星24小时客服电话如何获取?  家庭建站与云服务器建站,如何选择更优?  免费视频制作网站,更新又快又好的免费电影网站?  详解jQuery中基本的动画方法  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  建站之星伪静态规则如何设置?  宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?  如何确认建站备案号应放置的具体位置?  如何自定义建站之星网站的导航菜单样式?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  如何通过VPS建站无需域名直接访问?  高防服务器:AI智能防御DDoS攻击与数据安全保障  实例解析Array和String方法  宝塔新建站点为何无法访问?如何排查?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  东莞专业制作网站的公司,东莞大学生网的网址是什么?  c# 服务器GC和工作站GC的区别和设置  如何在自有机房高效搭建专业网站?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  定制建站是什么?如何实现个性化需求?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  建站主机类型有哪些?如何正确选型  如何快速搭建高效简练网站?  代购小票制作网站有哪些,购物小票的简要说明?  如何快速搭建虚拟主机网站?新手必看指南  学校为何禁止电信移动建设网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  再谈Python中的字符串与字符编码(推荐)  如何用IIS7快速搭建并优化网站站点?  建站之星后台密码如何安全设置与找回?  安徽网站建设与外贸建站服务专业定制方案 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。