• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
编写人生
写写代码,写写人生
博客园    首页    新随笔    联系   管理    订阅  订阅
.NET 2.0泛型集合类与.NET 1.1集合类的区别(二)
.NET 2.0泛型集合类与.NET 1.1集合类的区别(一)

3、接口
在接口方面改动最大的ICollection<T>,在1.1中,ICollection是一个只读的版本,并没有任何方法可以让你修改集合中的数据,但在泛型的ICollection<T>中增加了修改数据的方法和IsReadOnly属性,我很遗憾没有找到泛型化的只读版本的ICollection。

ICollection<T>虽然可以修改数据,但他缺乏索引功能的支持,所以又定义了IList<T>接口,他继承自ICollection<T>并提供用数字检索的功能。

在与老版本的集合接口兼容性方面,IEnumerable<T>支持IEnumerable,ICollection<T>不支持ICollection,IList<T>也不支持IList。

 

System.Collections.Generic.IDictionary<TKey, TValue>与旧版本的字典并没有太大的区别,在接口的继承层次上,原先的IDictionary继承自ICollection,现在仍然是对应的泛型版本ICollection<T>,但因为ICollection<T>增加了修改数据的功能,这就带来了一定的麻烦,因为字典要求Add方法传入Key和Value俩个参数,而ICollection的Add只能有一个参数,所以在ICollection<T>中限制为:ICollection<KeyValuePair<TKey,TValue>>,以提供俩个参数。

字典接口还新增加了TryGetValue(TKey, TValue),这个方法主要是为提高性能而设立,原先如果你想安全的获取某个键位时,必须使用ContainsKey(TKey)先检索是否存在,然后用This检索,这样就有俩次检索的过程,现在的TryGetValue将只用检索一次。

posted on 2005-08-28 15:44  编写人生  阅读(2047)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3