Is there any way to pass an array so that any changes made to it are not returned?
I've always passed arrays byref, and built copies such that any changes made would be upon the copy, to prevent backward propagation errors.
But perhaps I could do it some other way?
I was hoping that ByVal might now work in Net'05, but it still acts like a ByRef when passing arrays.
For example:
changes the original array.Code:Private Sub TestSortToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TestSortToolStripMenuItem.Click Dim mArr() As Integer ReDim mArr(5) Dim mI As Integer For mI = 1 To 5 mArr(0) += 1 mArr(mArr(0)) = mI Next Call ECHO_IT(mArr) For mI = 1 To mArr(0) MessageBox.Show(mArr(mI)) Next End Sub Private Sub ECHO_IT(ByVal mArr() As Integer) Dim mI As Integer For mI = 1 To mArr(0) MessageBox.Show(mArr(mI)) mArr(mI) = 0 Next End Sub
Is there a better method to pass an array and not return any changes made upon it?
-Lou




Reply With Quote