专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

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

发布时间:2011-06-23 16:01:59 文章来源:www.iduyao.cn 采编人员:星星草
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了
------解决方案--------------------
探讨

那当我采用全是变量的时候同样采用值传递,却没有问题呢,只有数组和变量混用的时候才出现这个问题。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: