首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

VB2010中子程序参数传递有关问题

2012-02-11 
VB2010中子程序参数传递问题一直用VB6,现在想转到.net,但是刚刚写了程序就不能没有达到自己期望。下面的代

VB2010中子程序参数传递问题
一直用VB6,现在想转到.net,但是刚刚写了程序就不能没有达到自己期望。
下面的代码中,子程序中的变量z没有返回期望的值,而是0
当子程序中变量z改成数组时,却能得到期望值。是不是VB.net中子程序的参数不能变量和数组混用?

如何才能正确返回期望的值呢?

VB.NET code
   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        Dim x(), y(), i, z As Integer        ReDim x(4), y(4)        For i = 1 To 5            x(i - 1) = i        Next         test1(z, x, y)        TextBox1.Text += y(0) & vbTab & y(1) & vbTab & y(2) & vbTab & y(3) & vbTab & y(4) & vbCrLf        TextBox1.Text = TextBox1.Text & z    End Sub    Sub test1(ByVal z As Integer, ByVal xx() As Integer, ByVal yy() As Integer)        Dim i As Integer        For i = 0 To 4            yy(i) = xx(i) + xx(i)            z += xx(i)        Next     End Sub


[解决办法]
[code=VB.NET][/code]
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim x(), y(), i, z As Integer
ReDim x(4), y(4)
For i = 1 To 5
x(i - 1) = i
Next
test1(z, x, y)
TextBox1.Text += y(0) & vbTab & y(1) & vbTab & y(2) & vbTab & y(3) & vbTab & y(4) & vbCrLf
TextBox1.Text = TextBox1.Text & z
End Sub


Sub test1(ByRef z As Integer, ByVal xx() As Integer, ByVal yy() As Integer)
Dim i As Integer
For i = 0 To 4
yy(i) = xx(i) + xx(i)
z += xx(i)
Next
End Sub
这是值传递和址传递。你那个局部变量是值传递,数组是址传递!
[解决办法]
vb6也有这个问题的,只是参数的默认方式改变了,以前默认是byref,现在默认是byval了
[解决办法]
探讨

那当我采用全是变量的时候同样采用值传递,却没有问题呢,只有数组和变量混用的时候才出现这个问题。

热点排行