在VB.NET中调用过程的优缺点是什么?

时间:2009-12-04 16:28:25

标签: vb.net procedure

我想了解使用Call Keyword调用程序的优缺点,而不使用VB.NET中的Call?

Private Sub ProOne()
     ' Code Are Here
End Sub

Private Sub Calling()
   ProOne()           ' I would like to know pros and cons of this
   Call ProOne()      ' And I would like to know pros and cons of this
End Sub

先谢谢所有人。

6 个答案:

答案 0 :(得分:13)

没有专业人士,也没有缺点。

Call关键字是旧VB方言的遗留关键字。

在VB.net中它没有意义,而且是合成糖。

答案 1 :(得分:11)

来自here

  

通常使用Call语句来调用没有的过程   返回一个值。如果过程返回一个值,则为Call语句   抛弃它。

     

调用a时,不需要使用Call语句   程序。但是,它提高了代码的可读性。

因此,从本质上讲,ProOne()和Call ProOne()在语义上是等效的。

答案 2 :(得分:7)

我发现一个有趣的用途(R#建议),就是当你需要创建一个实例来调用单个方法然后将其标记为垃圾收集时。
不确定我是否保留它。

例如

Call (new MyType()).MySub()

相当于

dim anInstance = new MyType
anInstance.MySub

答案 3 :(得分:3)

虽然它们在技术上是等价的,但我反对使用“Call”。从VB6迁移到VB.Net时,重要的是要认识到它们是完全不同的语言,必须以完全不同的方式编写。不幸的是,微软希望为VB6开发人员提供支持,他们通过添加模仿VB6功能的功能提供了这一功能,但显着低于.Net等效功能。

使用任何VB6保持器切断所有连接将使开发人员尽快停止使用这些位,并导致更好的代码输出。

答案 4 :(得分:2)

来自文档

  

将控制转移到Function,Sub,   或动态链接库(DLL)   程序。 [Call] procedureName [   (argumentList)]

所以,

  

您通常使用Call语句   调用不返回的过程   一个值。如果程序返回a   值,Call语句丢弃它。

     

您无需使用呼叫   调用过程时的语句。   但是,它提高了可读性   你的代码。

答案 5 :(得分:0)

即使在2019年,Call语句仍然具有相关性:“当被调用的表达式不是以标识符开头时,通常使用Call关键字。不建议将Call关键字用于其他用途。”

Call Statement (Visual Basic)

MSDN代码示例:

Sub TestCall()
    Call (Sub() Console.Write("Hello"))()

    Call New TheClass().ShowText()
End Sub

Class TheClass
    Public Sub ShowText()
        Console.Write(" World")
    End Sub
End Class