开发者

Altering array values in VB.NET

开发者 https://www.devze.com 2023-02-02 11:16 出处:网络
I\'m using a 2D array to store data in a grid and all the data is ones and zeros. By default, the array is all zeros. When I attempt to modify values in the array using variable(y)(x) = 1 where x and

I'm using a 2D array to store data in a grid and all the data is ones and zeros. By default, the array is all zeros. When I attempt to modify values in the array using variable(y)(x) = 1 where x and y are integers in range it changes the value to 1 in the entire column, not just a single cell.

For example:

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

Whenever I call modifyCells(0,0) I get the value of every sub-array looking like this:

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

Whereas I want this 开发者_StackOverflow社区to happen only to the first sub array (i.e the value at cells(0)(0) = 1 and only that value).

How can I manage this? Thanks in advance.

(If it makes any difference the code used to populate the array is below)

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


Your problem is that you are populating each row with exactly the same array. You need to move your local variable definition into the loop:

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


You are basically adding a reference to the same array to each position in cells.

Try this instead:

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

精彩评论

暂无评论...
验证码 换一张
取 消