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),按照你的理解,怎么传呢?