关于DataTable的Column存储的一个问题

m00ners 2010-07-08 05:41:02
DataColumnCollection中为什么使用的是ArrayList而不是IList<DataColumn>来存储Column?
我记得IList效率比ArrayList效率要高啊,不需要装箱拆箱转换。
...全文
164 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
m00ners 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 m00ners 的回复:]
引用 7 楼 dancingbit 的回复:
DataColumnCollection中为什么使用的是ArrayList而不是IList<DataColumn>来存储Column?
----------------------------------------
我没有找到这一点的依据


通过工具是可以看到DataColumnCollection内部定义的。
private rea……
[/Quote]

最后一句应该是_list就是容器。
m00ners 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xuecheng_520 的回复:]
效率应该差不多吧!没测试过。很多东西都是.net FrameWork封装好了,如果开源就好了
[/Quote]

为什么泛型在这里效率没有优势呢?
m00ners 2010-07-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dancingbit 的回复:]
DataColumnCollection中为什么使用的是ArrayList而不是IList<DataColumn>来存储Column?
----------------------------------------
我没有找到这一点的依据
[/Quote]

通过工具是可以看到DataColumnCollection内部定义的。
private readonly ArrayList _list;
对Column的各种Add方法,最终会调用
private void ArrayAdd(DataColumn column)
{
this._list.Add(column);
//......
}

这个表明了ArrayList就是容器。
dancingbit 2010-07-09
  • 打赏
  • 举报
回复
然后,需要保持兼容的...
dancingbit 2010-07-09
  • 打赏
  • 举报
回复
这有什么稀奇的,DataTable出现的时候,.Net还不支持泛型。
学城 2010-07-09
  • 打赏
  • 举报
回复
效率应该差不多吧!没测试过。很多东西都是.net FrameWork封装好了,如果开源就好了
CGabriel 2010-07-09
  • 打赏
  • 举报
回复
哦。。。说错了,应该是 ArrayList 实现了 IList
CGabriel 2010-07-09
  • 打赏
  • 举报
回复
第一, ArrayList 继承自 Ilist

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArrayList : IList, ICollection,
IEnumerable, ICloneable

第二, 装箱跟拆箱只涉及到类型转换,跟容器没有关系
dancingbit 2010-07-09
  • 打赏
  • 举报
回复


DataColumnCollection中为什么使用的是ArrayList而不是IList<DataColumn>来存储Column?
----------------------------------------
我没有找到这一点的依据
m00ners 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dancingbit 的回复:]
然后,需要保持兼容的...
[/Quote]

这个ArrayList是Private的,保持兼容的话对外接口不变就可以了,内部结构为什么不"升级"一下呢?
应该不是这个原因吧
m00ners 2010-07-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cgabriel 的回复:]
第一, ArrayList 继承自 Ilist

C# code

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class ArrayList : IList, ICollection,
IEnumerable, ICloneable


第二, 装箱跟拆箱只涉及到类型转换,跟容器没有关系
[/Quote]

我还是没明白为什么不用效率更好的IList<T>

17,747

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧