配列は参照型です。 そのため、配列の変数に代入を行う場合、配列がまるごとコピーされて代入されるのではなく、配列への参照が代入されるだけとなる点に注意が必要です。
次の例のように、配列の変数に代入を行っても配列の実体は一つであるため、異なる変数を経由した変更でも実際に行われる変更は同一の配列に対するものとなります。
配列の代入
Imports System
Class Sample
Shared Sub Main()
' 配列を作成してarr1に代入
Dim arr1 As String() = {"Alice", "Bob", "Charlie"}
' arr1の各要素を表示
Console.WriteLine("arr1(0) = {0}", arr1(0))
Console.WriteLine("arr1(1) = {0}", arr1(1))
Console.WriteLine("arr1(2) = {0}", arr1(2))
Console.WriteLine()
' arr1に代入されている配列への参照をarr2に代入
Dim arr2 As String() = arr1
arr2(1) = "Dave" ' arr2の1番目の値を変更
' arr1の各要素を表示
Console.WriteLine("arr1(0) = {0}", arr1(0))
Console.WriteLine("arr1(1) = {0}", arr1(1))
Console.WriteLine("arr1(2) = {0}", arr1(2))
End Sub
End Class
実行結果
arr1[0] = Alice arr1[1] = Bob arr1[2] = Charlie arr1[0] = Alice arr1[1] = Dave arr1[2] = Charlie
配列のコピーを行いたい場合はArray.CloneメソッドまたはArray.Copyメソッドを使います。