本文实例讲述了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小时内与您取得联系。