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 = {}
我有一个 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 = {}