当前位置:  开发笔记 > 后端 > 正文

Call关键字在VB6中有什么作用?

如何解决《Call关键字在VB6中有什么作用?》经验,为你挑选了3个好方法。

我们的项目中有一些代码看起来像这样:

Private Sub Method1()
    Call InnerMethod
End Sub

Private Sub Method2()
    InnerMethod
End Sub

Private Sub InnerMethod()
    '' stuff
End Sub

Method2优于Method2的优势是什么?



1> Patrick Cuff..:

来自MSDN:

调用过程时,不需要使用Call关键字.但是,如果使用Call关键字调用需要参数的过程,则必须将参数列表括在括号中.如果省略Call关键字,则还必须省略argumentlist周围的括号.如果使用Call语法调用任何内部函数或用户定义函数,则会丢弃函数的返回值.

例如:

Sub Proc1()
    Debug.Print "Hello World"
End Sub

Sub Proc2(text As String)
    Debug.Print "Hello " & text
End Sub

在即时窗口中,如果您输入

Proc1

然后打印"Hello World".如果你输入

Call Proc1

然后打印"Hello World".如果你输入

Proc2 "World"

然后打印"Hello World".如果你输入

Call Proc2 "World" 

你得到一个编译错误.你必须输入

Call Proc2("World")



2> Martin Brown..:

除了调用方法之外,调用没有什么特别之处.当所有行都必须以关键字开头时,它是从Basic的旧时代开始的."让"是这些关键字中的另一个,它总是放在作业之前,但不再需要.

Method1和Method2完全相同.



3> 小智..:

我发现'call'关键字的主要区别在于具有ByRef Arguments的函数(我在MS-Access VBA编辑器中找到了这个).如果您在没有"Call"关键字的情况下调用该函数,则不会为calle设置ByRef aruments.对于Ex:

Private Function Test(Optional ByRef refArg As String) As Boolean    
    refArg = "Test"
    Test = True
End Function

如果你调用没有Call关键字的函数

Dim a As String
Test(a)

a 在调用返回后将是一个空字符串

如果您使用Call关键字like 调用该函数

Dim a As String
Call Test(a)

a 将包含字符串 Test

详细说明见以下链接:http: //blogs.msdn.com/b/ericlippert/archive/2003/09/15/52996.aspx


这两者并不相同.在第一种情况下,将参数括在parens中会导致它被评估,并且评估的结果通过:实质上,你传递的是"a"的副本,而不是"a"本身.解析器使这一点变得明显.当您输入Test(a)并离开该行时,解析器将添加一个空格,使其成为Test(a)以指示它是一个表达式; 而使用呼叫测试(a)将不会添加空格 - 您直接传递"a".请参阅以上Patrick Cuff的答案,以获取文档参考.
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有