在VB.NET中更改数组值

时间:2011-01-03 17:05:03

标签: vb.net visual-studio-2010 vb.net-2010

我正在使用2D数组在网格中存储数据,所有数据都是1和0。默认情况下,数组全为零。当我尝试使用variable(y)(x) = 1修改数组中的值时,其中x和y是范围内的整数,它将整个列中的值更改为1,而不仅仅是单个单元格。

例如:

Public cells(19)() As Integer

'Code to  populate it with zeros goes here

Public Sub modifyCells(ByVal x As Integer, ByVal y As Integer)
    cells(x)(y) = 1
End Sub

每当我调用modifyCells(0,0)时,我都会得到每个子数组的值,如下所示:

1,0,0,0,0,0,0,0,0,0

而我希望这只发生在第一个子数组中(即单元格(0)(0)= 1处的值,并且只有该值)。

我该如何管理?提前谢谢。

(如果有任何不同,用于填充数组的代码如下)

Public Sub clear()
    Dim A1() As Integer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    For y = 0 To 19
        cells(y) = A1
    Next
End Sub

2 个答案:

答案 0 :(得分:1)

您的问题是您使用完全相同的数组填充每一行。您需要将局部变量定义移动到循环中:

Public Sub clear()
    For y = 0 To 19
        Dim A1() As Integer = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        cells(y) = A1
    Next
End Sub

答案 1 :(得分:0)

您基本上是将相同数组的引用添加到cells中的每个位置。

请改为尝试:

Public Sub clear()
    For y = 0 To 19         
        cells(y) = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}     
    Next 
End Sub