问题:

你希望用泛型替代所有的ArrayList以提高应用程序的性能,并使代码更简单。当你发现结构体或其他类型的值保存在这些数据结构中,导致装箱/拆箱操作时,这个是必要的。

解决方法:

把所有出现System.Collections.ArrayList的类用效能更好的泛型System.Collections.Generic.List类替代。

这里有一个用System.Collections.ArrayList类的简单的例子:


三、用泛型替代ArrayList    public static void UseNonGenericArrayList()
    }

这里是一个用System.Collections.Generic.List的简单例子:


三、用泛型替代ArrayList    public static void UseGenericList()

讨论:

由于ArrayList几乎在所有的应用程序中都会用到,因此,这是第一个可以改善性能的好地方。在一些简单的应用程序中,用这种替代方法实现ArrayList是非常简单的。但是,有几点是应该值得注意的。比如,泛型List类并没有实现ICloneable接口,而ArrayList类实现了。

注意,如果没有返回一个同步版本的泛型List,没有返回确定大小的泛型List,那么IsFixedSizeIsSynchronized属性将始终返回falseSyncRoot属性将始终返回一个和它相同的对象。实际上,这个属性返回的是this指针。微软建议,使用lock关键字去锁定整个集合或者是其他你使用的同步的对象。

PSArrayList默认的构建大小是16个元素,而List<T>4个元素。也就是说,如果第17个元素被加到List<T>中,那么,List<T>会重新分配大小3次;而ArrayList只需1次。对于程序的性能,这一点是应该考虑的。

相关文章:

  • 2022-12-23
  • 2021-08-10
  • 2021-11-04
  • 2021-11-14
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-06-04
  • 2021-12-22
  • 2022-02-15
  • 2021-07-26
  • 2021-12-14
  • 2022-12-23
相关资源
相似解决方案