2009-12-04 42 views
6

我想知道在VB.NET中调用过程的优缺点吗?VB.NET中调用过程的优缺点是什么?

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 

在此先感谢所有。

回答

10

here

您通常使用Call语句来调用不 返回一个值的过程。如果程序返回一个值,则呼叫语句 会将其丢弃。

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

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

12

没有优点,也没有缺点。

Call关键字是旧版VB方言的传统关键字。

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

2

从技术文档

将控制转移到一个功能,分, 或动态链接库(DLL) 过程。 [电话]过程名[ (参数列表)]

所以,

您通常使用Call语句来调用 不返回 值的过程。如果该过程返回 值,则Call语句将丢弃该值。

调用过程时,您不需要使用呼叫 声明。 但是,它提高了代码的可读性 。

+7

Call (new MyType()).MySub() 

“不过,这会增加你代码的可读性”。取决于个人的品味,我不能忍受它自己,从来没有使用它:) – 2009-12-04 16:57:29

3

虽然它们在技术上是等同的,但我会反对使用“Call”。当从VB6移动到VB.Net时,真正重要的是它们是完全不同的语言,必须以完全不同的方式编写。不幸的是,微软希望为VB6开发人员提供支持,他们通过添加模仿VB6功能的功能来提供这一功能,但与.NET相当。切断所有与VB6持有的关系将使开发人员尽快停止使用这些位,并导致更好的代码输出。

+0

虽然我同意你的看法,我不明白为什么有人愿意削减所有关系不会只使用C#而不是VB.NET。语法的熟悉程度几乎是VB.NET的唯一做法。 – Dan 2014-07-09 13:44:11

6

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

例如相当于

dim anInstance = new MyType 
anInstance.MySub 
+0

不会使用默认实例更简洁吗?即只是'MyType.MySub()' – Michael 2012-12-28 21:13:22

+0

@Michael,这表明你会使用静态方法。该方法不是静态的。我认为VB的确允许这样做,但它相当混乱。当然你来自C#bgnd。 – 2012-12-31 09:51:44

+0

@BorisCallens如果你没有传递任何东西给构造函数,我不会看到如何实例化一个新的实例,比使用默认实例更容易混淆。 – Dan 2014-07-09 13:40:38