none
function问题 RRS feed

  • 问题

  •  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim L As Double
            Dim B As Double
            L = 10
            B = 6
            Debug.Print(L & " " & B)
            ChangeLengthAndBreadth(L, B)
            Debug.Print(L & " " & B)
        End Sub
    
        Function ChangeLengthAndBreadth(ByRef Length As Double, ByRef Width As Double)
            Length = 1.2 * Length
            Width = 1.2 * Width
           
    
        End Function

    1.这个function 没有出现错误,但会出现警告说缺少return关键字。其实return这个关键词是否可以不写,会有影响吗?

    2. 在这个function,是使用byref,为什么不可以用byval呢??我在网上找关于这两个的分别,但还是很模糊。各位大大可以简单解释吗,最好附上简单的例子。谢谢

    2012年5月22日 2:19

答案

  • 1)首先你这个函数只是改变两个变量的内容(数值),因此没有最终返回值,虽然不影响,但是不推荐使用,建议把Function改成Sub(过程,无返回值)。

    2)ByRef是绝对地址引用,ByRef是传递数值(拷贝)。你先记住——ByVal:内部函数改变了数值,外部变量不会发生改变;而ByRef的话因为引用了变量绝对地址,因此内部和外部实际上使用同一个变量,因此内部改变了变量数值外部必然改变(同步)。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年5月22日 2:34
    版主