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

ByRef 传送参数,为何传递的实参是表达式时.就变成了传值传递

2013-01-02 
ByRef 传递参数,为何传递的实参是表达式时.就变成了传值传递.求大大解惑呀?感激不尽。Public Class Form1Pr

ByRef 传递参数,为何传递的实参是表达式时.就变成了传值传递.
求大大解惑呀?感激不尽。
Public Class Form1

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim a, b, c As Integer
        a = 1 : b = 2
        c = hanshu(a, b + 0) '地址传递不了表达式,于是变成传值传递.是什么原因
        TextBox1.AppendText(CStr(a))
        TextBox1.AppendText(CStr(b))
        TextBox1.AppendText(CStr(c))
    End Sub
    Private Function hanshu(ByVal x As Integer, ByRef y As Integer) As Integer
        x += 1
        y += 1
        Return x + y
    End Function
End Class
[解决办法]
当你传递b + 0的时候,编译器其实帮你创建了一个匿名的变量,将b + 0的结果算好,代入变量,将这个变量传给函数,所以修改的是这个你看不见的变量了。

再说,假如b+0还能按照b传的话,如果是hanshu(a, b + a),按照你的理解,怎么传呢?

热点排行