You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET中如何用一维数组存储结构体的二维数组?

问题原因

你标注的代码行错误在于:List(Of code)里用了变量名code作为泛型类型参数,泛型要求传入类型名称而非变量名。你需要存储的是CodeBlock类型的二维数组,对应的类型是CodeBlock(,)。

正确实现方案

根据你“用一维数组存储若干结构体二维数组”的需求,提供两种可行实现:

方式一:交错数组存储多个二维数组

交错数组是数组的数组,适合存储不同尺寸的二维数组:

Public Structure CodeBlock
    Public R As Integer
    Public C As Integer
    Public text_tx As String
    Public text_bx As String
    Public selected As Boolean
End Structure

' 定义一个二维CodeBlock数组(nrows、ncols需提前定义)
Public code(nrows, ncols) As CodeBlock

' 声明一维数组,每个元素为CodeBlock交错数组(模拟二维结构)
' history数组共6个元素(索引0-5),每个元素可存一个二维结构数组
Public history(5) As CodeBlock()()

' 示例:将现有code二维数组转为交错数组存入history(0)
history(0) = New CodeBlock(nrows)()
For i = 0 To nrows
    history(0)(i) = New CodeBlock(ncols) {}
    Array.Copy(code, i * (ncols + 1), history(0)(i), 0, ncols + 1)
Next

方式二:结合List存储二维数组

如果需要动态增删二维数组,推荐用List(Of CodeBlock(,)),再用一维数组管理这些列表:

Public Structure CodeBlock
    Public R As Integer
    Public C As Integer
    Public text_tx As String
    Public text_bx As String
    Public selected As Boolean
End Structure

Public code(nrows, ncols) As CodeBlock

' 一维数组,每个元素是存储二维CodeBlock数组的列表
Public history(5) As List(Of CodeBlock(,))

' 初始化第一个列表并添加现有code数组
history(0) = New List(Of CodeBlock(,))()
history(0).Add(code)

' 若只需存储多个二维数组,更简洁的方式是直接用List:
' Public history As New List(Of CodeBlock(,))()
' history.Add(code)

核心要点

  • 泛型类型参数必须是类型名(如CodeBlock(,)),不能用变量名(如code)。
  • VB不支持直接声明二维数组的数组,需通过交错数组或List间接实现。

内容的提问来源于stack exchange,提问作者Boy80

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:49:56