怎么说呢?先瞎举个例子吧:
你如果有病了,你要怎么办?你首先想到的是什么? 上医院!!!
/内科----药局划价--缴款----拿药
/
上医院第一件事干什么? 旬诊 ——> 挂号(到) /----外科---拍照--ct....
\
\眼科
.
.
以上都是你知道应该怎么做的
你为什么知道?因为它实现了这个接口 Ihospital
只要是医院,你就知道你到医院应该如何去做,你不用考虑它内部(挂号口,内科大夫是谁(你知道:大夫肯定有))是如何实现的,你明白了吧,接口的目的是对外公开,并让人使用的。
你要是开医院,你就得继承Ihospital接口,你对外告诉大家“我实现Ihospital了“
大家就来了并且到了你的医院不用你说,都知道按步骤做什么。
那么,是不是继承了Ihospital,你就完事了呢?
你说,我已经建立了内科,药局等设施,可是,病人来了,药局却没有药, "医生 "小学毕业,你的医院只有一个形式而已!
能行吗?
不行!!!
大家都知道你这里应该有大夫有药局(因为大家看见了你声明了Ihospital的接口)
可是你却没有进行下一步:实现接口的功能(买药,请大夫。。。)
现在,再说说上面的代码,IEnumerator,IEnumerable申明了什么呢?
IEnumerable:
public abstract virtual System.Collections.IEnumerator GetEnumerator ( )
IEnumerator:
public abstract virtual System.Boolean MoveNext ( )
public abstract virtual void Reset ( )
public object Current [ get]
以上可以从对象浏览器看见
继承他们有什么意义呢?
继承他门的意义是:已经有人再这个接口上做了应用,这个人就相当于 "病人 "
病人之一:foreach语句
(1)foreach干了什么,看看下面的代码
System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
//myList是一个实现了IEnumerable的集合,
while ( myEnumerator.MoveNext() )
{
Console.Write( "\t{0} ", myEnumerator.Current );
}
我也是菜鸟,大家互相学习。
IEnumerator 是所有非泛型枚举数的基接
IEnumerable的GetEnumerator返回一个实现了IEnumerator接口的对象
IEnumerable 表明某个对象能够被枚举,由IEnumerator的Current,MoveNext完成
ICollection主要针对静态集合;IList主要针对动态集合
IEnumerable<T>继承自IEnumerable
ICollection<T>继承自IEnumerable<T>
IList<T>继承自ICollection<T>
IEnumerable接口
实现了IEnumerable接口的集合表明该集合能够提供一个enumerator(枚举器)对象,支持当前的遍历集合。IEnumerable接口只有一个成员GetEnumerator()方法。
IList接口和ArrayList类的目的是实现动态数组,ArrayList是IList的一个实现。
IEnumerable表明对象是不确定类型的集合并支持简单迭代,是不是定长根本不关心...
IEnumerable<T>表明对象是指定类型的集合并支持简单迭代,是不是定长根本不关心...
ICollection是IEnumerable接口的派生接口,表明对象是不确定类型的集合并支持简单迭代,而且定义了集合的大小、枚举数和同步方法,这里的大小是指可以是定长的也可以是不定长的...
IList是ICollection和IEnumerable的派生接口,表明对象是不确定类型的集合并支持简单迭代,而且定义了集合的大小、枚举数和同步方法,还可以按照索引单独访问,这里的大小是指可以是定长的也可以是不定长的...
ArrayList类是IList接口的实现,表明对象是不确定类型的大小可按需动态增加的数组...
List<T>类是IList<T>接口的实现,是ArrayList类的泛型等效类并增强了功能,表明对象是可通过索引访问的对象的强类型列表...在.NET 2.0以上可以完全代替ArrayList,就是说ArrayList已经被淘汰...
而动态数组和链表在本质上是不同的...在.NET 2.0以上有双向链表LinkedList<T>泛型类,它也是继承自ICollection<T>,IEnumerable<T>,ICollection,IEnumerable...