• .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将只用检索一次。

  • 相关阅读:
    docker备忘录
    GUAVA-RateLimit
    JDK各版本发展史
    C++ 基础备忘录
    浅谈MES
    MES在流程和离散制造企业的15个差别!
    mysql连接oracle补偿方案—odbc驱动
    WinForm控件Chart的图表类型
    C#的异常处理机制(try...catch...finally)
    oracle 横向列变为纵向列
  • 原文地址:https://www.cnblogs.com/tansm/p/224625.html
Copyright © 2020-2023  润新知