社区
C#
帖子详情
C# IEnumerable
、IEnumerator
、List
、ArrayList、[]数组各各的区别是什么
Jave.Lin
2009-12-10 02:57:48
如题
最好把每一种的使用灵活生活的说一下。
再说说区别。
...全文
5035
31
打赏
收藏
C# IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组各各的区别是什么
如题 最好把每一种的使用灵活生活的说一下。 再说说区别。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meng_zhixiang
2011-10-25
打赏
举报
回复
有趣的一个问题,学习了
青衣水袖归何处
2011-08-19
打赏
举报
回复
学习!大家说的好全面哦!懂了!谢了!
lixiandian
2011-02-23
打赏
举报
回复
前面的几位朋友讲的很好,让我对它们的理解有更深了!谢谢
longjiangxi
2010-11-09
打赏
举报
回复
vrhero讲的很好。
yuanxing19870710
2010-09-19
打赏
举报
回复
vrhero 你很棒!
fww0404
2010-09-18
打赏
举报
回复
[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/]
王建野
2010-08-14
打赏
举报
回复
虚心学习下。
brightmind2010
2010-06-09
打赏
举报
回复
学习一下,不要那么多的火药味。
longqi86
2010-05-28
打赏
举报
回复
学习下
woshifou
2009-12-28
打赏
举报
回复
学习下。
Beyond.FC
2009-12-28
打赏
举报
回复
学习一下。
Jave.Lin
2009-12-11
打赏
举报
回复
[Quote=引用 14 楼 vrhero 的回复:]
迭代是数学名词,和中文英文没什么关系...
很多人不懂说明很多人数学基础差,认真上过理工大学一年级的都应该懂,其实很多认真学习的高中生都懂,现在的中学奥数都有教...去补习一下线性代数...
MSDN和CSDN都不是学校,不负责基础教育...
[/Quote]
MSDN 不负责基础提供,那为什么MSDN有这么多的基础教程。
而且我没有说MSDN和CSDN是学校,你怎么就理解成都是学校了呢?
难道可以学习的地方就一定是学校?
这个也是数学的充分必要条件学的,补习一下吧。
cuike519
2009-12-11
打赏
举报
回复
先看这些类的说明,再看这些类的remarks,remarks里面一般详细介绍类的用法和意义。
如果要钻研其具体的差异,可以从接口以及内部实现来比较,这种比较可以通过reflector。
江南小鱼
2009-12-11
打赏
举报
回复
在程序中拼凑sql时,可以这样使用List<T>
List<SqlParameter> list=new List<SqlParameter>();
list.Add(new SqlParameter("参数名","参数值"));
...
SqlParameter[] para=list.ToArray();
...
江南小鱼
2009-12-11
打赏
举报
回复
能够使用foreach遍历的集合,必须继承IEnumberable(或IEnumerable<T>泛型接口)接口。
IEnumberable接口只有一个方法:
IEnumerator GetEnumberator(){}//返回一个IEnumberator类型的对象,该对象实现System.Collection.IEnumerator接口。
interface IEnumberator
{
object Current{get;}
bool MoveNext();
void Reset();
}
xzjxylophone
2009-12-11
打赏
举报
回复
顶下 ,支持。楼上说的都挺好,关键是要自己多写几个程序练习练习,具体的程序可以参考MSDN上的例子或者在网上搜索,并且是 IEnumerable<T>、IEnumerator<T>、List<T>、ArrayList、[]数组 一个一个的实现他们的例子,看的多了你就了解了并知道区别了,毕竟只有自己经历这些你才能完全的消化。现在这里有很多人都知道这些到底怎么用,但是很少有人总结这些区别,这个开创的举动交给你了 呵呵。。
RogerXi
2009-12-11
打赏
举报
回复
[Quote=引用 13 楼 linjf520 的回复:]
引用 12 楼 vrhero 的回复:
引用 11 楼 linjf520 的回复:
恩,这么说:
IEnumerable、IEnumerable <T>、ICollection都用于定长的。即:你所说的静态数组。
IList、ArrayList、List <T>都是非定长的。即:你所说的动态数组(我觉得就是链表)
乱理解,整个一团浆糊...为什么不去看MSDN?
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...
迭代:我中文上不很懂。就别说我,很多人也没有真正可以用中英,描述:迭代是什么意思。
词典里也只能查到:迭代器,之类的东西。或是迭代周期之类的。
技术上你说得很不错。
顺便说一句:
“
要是MSDN 这么好理解好学习。
那CSDN 的存在是为了什么?
”
[/Quote]
如果要用foreach遍历容器类,那就一定要实现IEnumerater,这样lz就能理解迭代了吧 哈哈
vrhero
2009-12-10
打赏
举报
回复
迭代是数学名词,和中文英文没什么关系...
很多人不懂说明很多人数学基础差,认真上过理工大学一年级的都应该懂,其实很多认真学习的高中生都懂,现在的中学奥数都有教...去补习一下线性代数...
MSDN和CSDN都不是学校,不负责基础教育...
Jave.Lin
2009-12-10
打赏
举报
回复
[Quote=引用 12 楼 vrhero 的回复:]
引用 11 楼 linjf520 的回复:
恩,这么说:
IEnumerable、IEnumerable <T>、ICollection都用于定长的。即:你所说的静态数组。
IList、ArrayList、List <T>都是非定长的。即:你所说的动态数组(我觉得就是链表)
乱理解,整个一团浆糊...为什么不去看MSDN?
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...
[/Quote]
迭代:我中文上不很懂。就别说我,很多人也没有真正可以用中英,描述:迭代是什么意思。
词典里也只能查到:迭代器,之类的东西。或是迭代周期之类的。
技术上你说得很不错。
顺便说一句:
“
要是MSDN 这么好理解好学习。
那CSDN 的存在是为了什么?
”
vrhero
2009-12-10
打赏
举报
回复
[Quote=引用 11 楼 linjf520 的回复:]
恩,这么说:
IEnumerable、IEnumerable<T>、ICollection都用于定长的。即:你所说的静态数组。
IList、ArrayList、List <T>都是非定长的。即:你所说的动态数组(我觉得就是链表)
[/Quote]
乱理解,整个一团浆糊...为什么不去看MSDN?
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...
加载更多回复(11)
C#
IEnumera
ble
、
IEnumera
tor
、
List
、
Array
List
、[]
数组
各各的
区别
是
Array
List
的泛型,
Array
List
里边的数据类型是object,
List
<T>里边的是具体的某种类型,
Array
List
类似于向量,可以存储不同的数据类型在一个
数组
里边(转换为了object)。 一般使用的时候尽量使用
List
<T...
C#
IEnumera
ble
与
IEnumera
tor
转自:... 解释了
IEnumera
ble
与
IEnumera
tor
的
区别
,并使用给出相关实例。 转自:http://blog.csdn.net/byondocean/article/details/6871881 从使用foreach出发一步步解释
IEnumera
浏览器console的用法
IEnumera
ble
、
IEnumera
tor
、
List
、
Array
List
、[]
数组
各各的
区别
2010-11-23 ActiveWriter Preview 4.1 for VS2008 2010-11-23 [转]ActiveWriter----集成到VS.NET的NHibernate(ActiveRecord)对象可视化设计工具...
2024-2030全球及中国PCB接触式探头行业研究及十五五规划分析报告.docx
2024-2030全球及中国PCB接触式探头行业研究及十五五规划分析报告
网站界面设计mortal0418代码
网站界面设计mortal0418代码
C#
110,533
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章