2016-11-19 78 views
2

调用子,功能,而不共享关键字从另一个形式我有2种形式我们为什么可以在VB

形式1:

Public Class Form1 
    Public Sub MySub() 
    End Sub 
End Class 

表格2:

Public Class Form2 
Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Form1.MySub()//why?? 
End Sub 
End Class 

为什么可以写Form1.MySub()在VB中但C#不是

+0

你是什么意思,你不能在C#中?你能给个例子吗?只要它是公共职能,它可以被称为外部类 –

+6

Form1是一个类型名称,而不是对象引用。 VB的默认实例功能是为了帮助程序员转向.NET而创建的。对于一个程序员的头脑来说,非常难以学习这种面向对象编程。也会导致很多线程问题。 OOP是你需要学习的东西,在C#中没有捷径。 –

+0

@PratikGaikwad:你需要一个实例来调用一个实例方法 - 正如汉斯所说,VB创建了一个与表单相同的默认表单实例。这是VB最糟糕的“特征”之一 - 它确实鼓励了对缺乏理解。 –

回答

3

VB.Net编译器提供了一些Default Instance的东西。 C#没有。

这是在VB.Net中完成的,至少部分是为了与旧版VB6代码兼容,并且至少部分在C#中没有完成,因为C#不允许命名类型和变量之间的冲突。