VB多维列表常见用法及List/ArrayList/Array适用场景咨询
VB开发两类数据结构相关问题解答
多层嵌套泛型List的使用情况
list As List(Of List(Of List(Of Integer)))这类三层嵌套的List写法不属于VB实际开发中的普遍常用用法。
这类超过两层的嵌套集合可读性极差,后续遍历、取值、修改的时候很容易写错层级,平白增加维护成本。常规业务开发里如果要表达三维层级的整数数据,开发者基本都会选更稳妥的方案:
- 按业务维度封装自定义实体,把三层嵌套的逻辑映射成实体属性,比如按“区域-门店-商品销量”的业务关系定义对应实体,每层实体通过属性挂载下一层的集合,代码语义清晰,后续改需求也不容易出错
- 如果是每一层长度固定的规则三维数据,直接用三维数组
Dim numArr As Integer(,,),访问效率比嵌套List高,下标写法也更直观
只有极少数写一次性小工具、临时处理不规则三维零散数据的场景,才会有人直接写三层嵌套List,正式长期维护的项目里几乎见不到这种写法。
List、ArrayList、Array三类数据结构的适用场景
三类结构的定位差异非常明确,日常开发按场景选就行:
List(Of T)泛型列表
是当前VB.NET开发的首选动态集合,绝大多数需要可变长度集合的场景都优先用它。作为泛型实现,它存储指定类型的数据时没有装箱拆箱的性能损耗,支持编译期类型检查,不会随便出现运行时类型转换错误,自带的增删、排序、遍历、筛选方法封装完善,只要你需要长度可动态调整、存储同类型数据的集合,选它的适配性最高。ArrayList非泛型动态数组
属于.NET平台早期未推出泛型时的遗留产物,内部所有元素都以Object类型存储,不管存值类型还是引用类型都有额外的装箱拆箱开销,也没有编译期类型安全校验,很容易埋下类型转换的运行时bug。现在写新代码完全不推荐使用,只有维护2005年之前开发的老旧项目、对接早期遗留接口时才会接触到这个结构。Array数组(含多维数组)
是.NET最基础的定长集合,内存连续分配,访问性能是三者里最高的。适用场景非常清晰:一是初始化前就能确定集合长度、后续不会频繁做增删元素操作的场景,比如存固定的配置项列表、定长的接口返回结果;二是存储规则的多维等长数据,比如数学计算里的二维矩阵、三维坐标集,用多维数组比嵌套集合访问效率高,下标写法也更简洁。
内容的提问来源于stack exchange,提问作者Nane
相关产品推荐
相关产品推荐

