在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
.NET中提供了一种称为集合的类型,类似于数组,将一组类型化对象组合在一起,可通过遍历获取其中的每一个元素 本篇记录一个自定义集合的小实例。自定义集合需要通过实现System.Collections命名空间提供的集合接口实现,常用接口有: ICollection:定义所有非泛型集合的大小,枚举数和同步方法 IComparer:公开一种比较两个对象的方法 IDictionary:表示键/值对的非通用集合 IDictionaryEnumerator:枚举非泛型字典的元素 IEnumerable:公开枚举数,该枚举数支持在非泛型集合上进行简单的迭代 IEnumerator:支持对非泛型集合的简单迭代 IList:表示可按照索引单独访问的对象非泛型集合
今天的这个实例,以继承IEnumerable为例,继承该接口时需要实现该接口的方法,IEnumerable GetEnumerator() 在实现该IEnumerable的同时,需要实现 IEnumerator接口,该接口有3个成员,分别是: Current属性,MoveNext方法和Reset方法,其定义如下: Object Current{get;} bool MoveNext(); void Reset();
案例实现如下: 1.定义一个商品类:作为集合类中的元素类 public class Goods { public string Code; public string Name; public Goods(string code,string name) { this.Code = code; this.Name = name; } } 2.定义集合类,继承IEnumerable和IEnumerator接口 public class JHClass:IEnumerable,IEnumerator//定义集合类 { private Goods[] _goods; //初始化Goods类型集合 public JHClass(Goods[]gArray) { _goods = new Goods[gArray.Length]; for (int i=0;i<gArray.Length;i++) { _goods[i] = gArray[i]; } } /// <summary> /// 实现IEnumerable接口中的GetEnumerator方法 /// </summary> /// <returns></returns> IEnumerator IEnumerable.GetEnumerator() { return (IEnumerator)this; } int position = -1; //记录索引位置 // 实现IEnumerator接口中的Current方法 object IEnumerator.Current { get { return _goods[position]; } } public bool MoveNext() { position++; return (position < _goods.Length); } public void Reset() { position = -1; } } 3.功能实现,实现自定义集合的遍历,输出元素信息 static void Main(string[] args) { Goods[] goodsArray = new Goods[3] { new Goods("T0001","小米电视机"), new Goods("T0002","华为荣耀4X"), new Goods("T0003","联想服务器"), }; JHClass jhList = new JHClass(goodsArray); foreach (Goods g in jhList) //遍历集合 { Console.WriteLine(g.Code + " " + g.Name); } Console.ReadLine(); } 执行后输出:
|
请发表评论