我曾经有一个开发者问我为什么在很多地方都使用List... 我思考了一会儿... 但无法给出一个确定的答案。
如果你继承集合基类来扩展而不是使用List(Of T) - 你会得到什么优势?或者说 - 你不能用List做什么?
我曾经有一个开发者问我为什么在很多地方都使用List... 我思考了一会儿... 但无法给出一个确定的答案。
如果你继承集合基类来扩展而不是使用List(Of T) - 你会得到什么优势?或者说 - 你不能用List做什么?
使用泛型列表可以提高性能。
请参考以下问题:
引用自MSDN:
使用 List<(Of <(T>)>) 类的类型特定实现,而不是使用 ArrayList 类或编写自己的强类型包装集合,这对你很有好处。原因是你的实现必须做.NET Framework已经为你做的事情,而公共语言运行时可以共享Microsoft中间语言代码和元数据,而你的实现不能。
一个通用的List<>被设计用于速度和内部使用。另一方面,通用的Collection<>被设计用于可扩展性。
Collection<>类的优点之一是您可以覆盖几个不同的方法(ClearItems()、InsertItem()、RemoveItem()和SetItem())。另一方面,通用的List<>类型提供的没有任何可以被覆盖的方法。
这为什么很重要呢?例如,假设未来的需求要求在将项目添加到集合时引发ItemAdded事件。如果您使用了List<>类型,则选项不多。但是,如果您使用了Collection<>类,则可以公开新的ItemAdded事件并覆盖InsertItem()方法,以便在添加项目时引发ItemAdded事件。
类型转换需要时间,并且在使用泛型时会被防止。如果您使用List(Of T),则无需进行类型转换,因为它将是一个强类型的集合。如果您使用ArrayList,则需要从Object向您自己的类型和反向转换,这会导致额外的开销。
此外,您可以防止在编译时无法检测到的类型转换问题。(例如,在应该包含字符串的数组列表中添加一个整数在使用数组列表时不是问题,但在运行时不期望出现整数可能引发无效转换异常。使用泛型列表或集合可以防止出现此类问题,因为代码将无法编译。)
希望这有所帮助。