问题的历史
List(Of T) 集合在 VB.NET 中引入,用于替代过时的集合,提供类型安全性、动态大小调整和快速的索引访问。使用列表可以结构化数据,处理类型化元素,并避免与非通用集合相关联的常见错误。
问题
初学者通常不明白如何正确访问列表中的元素,如何添加、修改和删除元素,以及在错误使用索引时会发生什么(例如,超出列表范围)。这在程序运行时会导致异常。
解决方案
在 List(Of T) 中,元素是从零开始索引的。可以根据索引进行读写访问。如果索引无效,则会引发 ArgumentOutOfRangeException 异常。集合的方法可以安全地处理元素:
示例代码:
Imports System.Collections.Generic Dim numbers As New List(Of Integer)() numbers.Add(10) numbers.Add(20) Dim first As Integer = numbers(0) ' 获取索引为 0 的元素 numbers(1) = 99 ' 设置索引为 1 的元素 ' 删除 numbers.RemoveAt(0) ' 按索引删除
关键特性:
如果访问索引等于 List(Of T) 中元素的数量,我们会得到最后一个元素吗?
不会。索引是从 0 开始的,最大有效索引为 (Count - 1)。访问等于 Count 的索引将引发 ArgumentOutOfRangeException 错误。
是否可以在不删除现有数据的情况下将元素添加到 List(Of T) 的中间?
可以,通过使用 Insert 方法:
numbers.Insert(1, 42) ' 将 42 插入第二个位置,其他元素向右移动。
在使用 For Each 遍历时修改 List(Of T) 的集合是否危险?
危险。这将导致 InvalidOperationException。对于这些操作,请使用带索引的 For 循环,或者先构建要删除的列表。
在程序中通过 For Each 遍历 List(Of T),并在迭代中删除元素。
优点:
缺点:
代码通过 For 从后向前遍历元素,并删除符合条件的对象。
优点:
缺点: