class 中通用长度的二维数组

2d array of generic length in a class

我有一个 class 目前是这样工作的。

Class Maze
    Public board(10, 10) As Object 
Dim maze1 As New Maze With {.board = {{" ", " ", "X", "X", " ", "X", "X", "X", " ", "X"},
                                      {"X", " ", " ", " ", " ", "X", " ", " ", " ", "X"},
                                      {" ", " ", "X", " ", "X", " ", " ", " ", " ", "X"},
                                      {"X", " ", "X", " ", " ", "X", "X", "X", " ", " "},
                                      {"X", " ", "X", "X", " ", " ", " ", " ", "X", " "},
                                      {" ", "X", " ", " ", "X", " ", " ", "X", " ", " "},
                                      {" ", "X", "X", " ", "X", " ", " ", " ", " ", "X"},
                                      {" ", " ", " ", " ", " ", "X", "X", " ", " ", "X"},
                                      {"X", "X", " ", "X", " ", " ", " ", "X", " ", " "},
                                      {" ", " ", " ", "X", "X", " ", " ", " ", "X", " "}}}

但是,如果 GetLength 等方法现在不起作用,我无法找到删除预先指定的长度的方法。

在 .Net 世界中,如果您将类型定义为 Object,您几乎总是会做一些非常错误的事情,您很快就会后悔。在这种情况下,看起来 String 可能更合适。但是,也许根据稍后的使用方式,可能会发现 Integer 或特定的 class 类型可能会更好,同时还有一种特殊的方法可以将其转换为文本或图形以供输出。

继续讨论大小的具体问题...考虑一个列表:

Class Maze
        Dim board As List(Of List(Of String))
        

board = New List(Of List(Of string)) From {
            New List(Of String) From {" ", " ", "X", "X", " ", "X", "X", "X", " ", "X"},
            New List(Of String) From {"X", " ", " ", " ", " ", "X", " ", " ", " ", "X"},
            New List(Of String) From {" ", " ", "X", " ", "X", " ", " ", " ", " ", "X"},
            New List(Of String) From {"X", " ", "X", " ", " ", "X", "X", "X", " ", " "},
            New List(Of String) From {"X", " ", "X", "X", " ", " ", " ", " ", "X", " "},
            New List(Of String) From {" ", "X", " ", " ", "X", " ", " ", "X", " ", " "},
            New List(Of String) From {" ", "X", "X", " ", "X", " ", " ", " ", " ", "X"},
            New List(Of String) From {" ", " ", " ", " ", " ", "X", "X", " ", " ", "X"},
            New List(Of String) From {"X", "X", " ", "X", " ", " ", " ", "X", " ", " "},
            New List(Of String) From {" ", " ", " ", "X", "X", " ", " ", " ", "X", " "}
            }

现在你可以像这样在结尾添加一行:

board.Add(New List(Of String) From {" ", "X", " ", " ", " " ... })

或者像这样添加一列:

For Each c As List(Of String) In board
    c.Add(" ")
Next

这允许您拥有二维数组而无需明确指定长度

Public board(,) As Object = {}