ICollection与IEnumerable

3.1 ICollection<T>接口
  ICollection<T>接口定义了泛型集合接口,
    所谓泛型集合,即使用了.net Framework提供的泛型特性,
    使集合限定为只存储一种特定类型对象引用或值类型的数据的集合。
    泛型集合增强了集合访问的效率和安全性。
    由于存储类型已被确定,所以ICollection<T>比ICollection接口提供了更多的方法,
    包括添加到集合,从集合删除以及判断一个对象引用(或对象值)是否在集合中存在。 

3.2 IEnumerable<T>接口
  ICollection<T>接口实现了IEnumerable<T>接口,主要用来返回一个实现了实现了IEnumerator<T>接口的,确定类型的迭代子对象。
  参考ICollection<T>的继承关系图。


1、什么是可枚举类型
        可枚举类型是带有GetEnumerator方法的类型不一定是类也有可能是数组,接口,它返回一个枚举器。

2、什么是枚举器
        枚举器是可以依次返回集合中项的对象,获取一个枚举器的方法是调用对象的GetEnumerator的方法,
        简单理解枚举器就是GetEnumerator方法返回的实例,这个方法的返回的实例类型可以有很多种;
        例如我们使用foreach语句遍历数组中的内容时,我们可以依次取出数组中的每一个元素,
        读取它的值,为什么数组可以这么做?
        因为数组提供了一个枚举器对象,
        枚举器可以依次返回请求的数组中的元素。

IEnumerator接口是所有非泛型枚举器的基接口(即GetEnumerator方法返回实例类型如果是非泛型,则返回实例类型全部继承自IEnumerator接口).
IEnumerator<T>接口是所有泛型枚举器的基接口
类型是IEnumerator接口的枚举器(GetEnumerator方法返回的实例类型是IEnumerator接口)
包含三个函数成员:Current、MoveNext以及Reset,复杂了解即可,直接通过foreach语句遍历


第一  : ArrayList(非泛型集合)  与List(泛型集合)
第二 :HashTable(非泛型集合)对应Dictionary(泛型集合)
人各有命,上天注定,有人天生为王,有人落草为寇。脚下的路,如果不是你自己的选择,那么旅程的终点在哪,也没人知道。你会走到哪,会遇到谁,都不一定。
原文地址:https://www.cnblogs.com/ZkbFighting/p/15088853.html