答疑解惑:如何使用.NET中的集合

ZDNet软件频道 时间:2002-09-18 作者:BUILDER.COM |  我要评论(1)
本文关键词:
我是一名程序员,使用VB很久了,现在正在钻研.NET。我实在是弄不清它的集合类型:我找不到它和VB6的集合相对应的部分。.NET上有相应的集合吗?
问:我是一名程序员,使用VB很久了,现在正在钻研.NET。我实在是弄不清它的集合类型:我找不到它和VB6的集合相对应的部分。.NET上有相应的集合吗?

答:集合类型是VB6程序员最好的朋友:它的确是把多组对象集中入一个组的唯一方法,并能提供无争辩的枚举。它使得从组内检索任意对象变得很容易。我还可以先告诉你,在.NET里没有和VB6集合相对应的部分。你现在所能拥有的其实是很多类似于VB6集合的一揽子替换方案。事实上,在你寻找.NET的集合时,你要问自己的第一个问题是,“我真的需要一个吗”?

试试如下的数组吧:

要记住,所有的.NET语言都能够创建对象类型的数组。一般而言,数组在访问速度和内存利用率上要比任何集合的效率都高,而且在许多情况使用数组就足够了。实际上,很多.NET框架的一般集合类是由Object数组支持的。

假如你有一个类:Person,在VB.NET里,你会使用以下代码创建一个包含10项内容的Person数组:

Dim Persons(10) As Person

在C#里,会是这样

Person[] persons = new Person[10];

如我所述,绝大多数情况下,数组优于集合,唯一的例外是只有当:

  • 对象数量的增加或减少无法预计时。
  • 需要存储的数据不都是同一类型时。
  • 需要对从数组加入或者检索的对象进行操作时。
所以你真的需要集合吗?

如果你已经决定了肯定要使用集合,那么你就要决定哪种集合最合适:集合、形式表或者字典。简而言之,这些集合类型可以被细分为如下几种:

  • 集合只是一组有序的对象,这些对象只能通过排序枚举来检索。到System.Collections.ICollection接口查询集合的正式定义。
  • 形式表,相反,允许直接索引到低层的集合,它同时也支持枚举。形式表由System.Collections.ILis接口定义。
  • 字典,就像形式表一样,既允许枚举也允许直接索引到集合,但是会存储每个对象及其相关键值,并用键值给对象进行排序。需要了解更多信息可以看System.Collections.IDictionary

另一个最好的东西

.NET里和VB6 Collection最接近的是字典。唯一的不同是,它不像VB版本里的那样容易通过数值索引。要获得相同的功能,你需要创建一个能执行IListIDictionary的类。



百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134