2016-11-19 80 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#不允許命名類型和變量之間的衝突。