都是I开发,所以都是接口。
IEnumerator:集合访问器,基础的;没有它,就不能使用forearch遍历集合或数组,任何支持GetEnumerator()方法的类型都可以通过foreach结构进行运算。也可用 lamda 表达式查询。
IEnumerable:只包含一个抽象方法GetEnumerator(),返回一个可循环访问集合的IEnumerator对象。
IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了
IList(IList<T>)会立即在内存里创建持久数据,这就没有实现“延期执行(deferred execution)”,如果被加载的实体有关联实体(associations),此关联实体不会被加载(既不立即加载,也不延迟加载)。
IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤.
IQeurable(IQuerable<T>)不会立即在内存里创建持久数据,只有遍历它(如通过foreach)、把它转换成List等情况下才会向内存加载数据,它可以实现“延期执行”,如果当前被加载的实体有关联实体(associations),此关联实体可被接下来的访问加载。
IList与List 通俗一点讲,只能存放同一类型的元素,强类型,不需转换。
ArrayList:数组可存放不同的类型。元素都转Object,所以需要强制转换一下。
时间: 2024-10-10 08:22:00