vb.net - VB.NET - 索引数小于索引数组的维数
问题描述
Sub WriteMap()
Dim CharPos = {1, 1}
Dim PrintMap As String = ""
Dim Map(,) As String = {{" ", " ", " "}, {" ", " ", " "}, {" ", " ", " "}}
While True
Map(CharPos(0))(CharPos(1)) = "X"
For y = 0 To Map.GetUpperBound(0)
For x = 0 To Map.GetUpperBound(1)
PrintMap += $"{Map(y, x)} "
Next
PrintMap += vbLf
Next
Console.Write(PrintMap)
Dim Input = Console.ReadKey()
Console.Clear()
PrintMap = ""
End While
End Sub
错误来自 Map(CharPos(0))(CharPos(1)) = "X" 我不知道是什么原因造成的,因为 Map.Rank() 返回 2 我已经四处寻找解决方案,但到目前为止有只找到了打印数组内容的方法,但我找不到编辑数组中现有条目的方法。
解决方案
您已声明Map
为 2D 数组,但您正在像锯齿状数组一样访问它。这个:
Map(CharPos(0))(CharPos(1)) = "X"
应该是这样的:
Map(CharPos(0), CharPos(1)) = "X"
您这样做的方式是将其视为一维数组的一维数组,而二维数组不是。要将其声明Map
为锯齿状数组:
Dim Map(,) As String
必须是这样的:
Dim Map()() As String
推荐阅读
- shared-libraries - Blazor 共享组件未呈现
- mongodb - Mongoose 模型数据深于 1 级
- mysql - utf8_roman_520_ci 排序规则有什么令人反感的?
- javascript - 在 node.js 中编辑配置文件用户
- nginx - 当 Origin 关闭时,CORS 策略阻止 Nginx 缓存请求
- javascript - NGXS中map没有正确反序列化,无法使用
- sqlite - 如何在sqlite导入的csv中设置主键
- gke-networking - gke-1.13 和 gke-1.14 与 Peered VPC 通信的区别
- javascript - 在Javascript中打印对象数组的元素
- java - 无法将文件从服务器上传到另一个