從C#來了...爲什麼Main方法在VB中有'Overloads'這個詞?
我一直在尋找這個網站
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
,並注意到它說
public static void Main(string[] args) {
相當於
Overloads Shared Sub Main(ByVal args() As String)
所以...那是什麼「過載「所有關於?
從C#來了...爲什麼Main方法在VB中有'Overloads'這個詞?
我一直在尋找這個網站
http://www.harding.edu/fmccown/vbnet_csharp_comparison.html
,並注意到它說
public static void Main(string[] args) {
相當於
Overloads Shared Sub Main(ByVal args() As String)
所以...那是什麼「過載「所有關於?
這是一個錯誤,沒有什麼是越來越重。在任何地方都沒有預先烘焙的Sub Main(),特別是不在名爲HelloWorld的類中。它恰好工作,因爲vb.net編譯器對它不是很挑剔。將此代碼粘貼到一個類中以供您自己查看:
Class Test
Overloads Sub IdontOverloadAnything()
End Sub
End Class
VB.NET編譯器傾向於使魔術發生。這不是其中之一,主要()魔法在CLR中。大多數C#程序員都會認爲這是該語言中的一個錯誤。我不能不同意。
在VB6中,就像在大多數「古老的」編程語言中一樣,有一句格言「只能有一個! (見電影「漢蘭達」)。在模塊或類中只能有一個具有相同名稱的Function或Sub。在VB.NET中,與C#中一樣,只要具有不同的簽名,就可以擁有多個具有相同名稱的方法。這意味着他們需要有不同數量的參數或不同類型的參數。這些函數然後被稱爲超載。在VB中,您可以將可選關鍵字Overloads
添加到這些函數或子集。
Public Sub Test(s As String)
Public Sub Test(i As Integer)
Public Sub Test(s As String, i As Integer)
這樣可以。然而,
Public Sub Test(t As String)
不會,因爲存在一個重載的方法,只有一個字符串參數。不同的參數名稱是不夠的。
由於存在標準的Shared Sub Main,所以您將其重載。您可以省略重載。
由於標準Sub Main沒有參數,因此您需要使用帶有參數的新Main程序overloading。
那麼只需'Shared Sub'就足夠了? – BigOmega
是的,公共共享小組。 –