2012-12-04 69 views
2

我想製作具有相同名稱但具有不同參數的多個subs。VB.NET使同名多參數

例如:

Public Sub DoThis(Byval CustomerName As String) 
Public Sub DoThis(Byval CustomerID As Integer) 
Public Sub DoThis(Byval CustomerID As Integer, ReferenceID As Integer) 

但隨後VB.NET是告訴我,這樣子已經存在。 有人可以告訴我我該怎麼做?

謝謝!

+4

只要簽名是唯一的,就應該可以工作。 –

回答

6

你已經向我們展示了絕對的作品 - VB不會抱怨這件事。

這叫做重載它是.NET的一個基本特性。但是,爲了實現此目的,您需要確保簽名(即參數類型列表)嚴格爲不同的適用於您的所有重載。

下面是一個例子來展示不同的參數類型列表中的重要性:

Sub DoThis(CustomerName As String) … 
Sub DoThis(ProductName As String) … 

潛艇看起來截然不同。但是VB應該如何處理下面的調用?

DoThis("Meyer") 

它不知道是否「邁爾」是客戶名稱或產品名稱(事實上,它很可能也不是!) - 所以VB禁止這些聲明。但是,以下是精絕,因爲明確的:

Sub DoThis(Customer As Customer) 
Sub DoThis(Product As Product) 
DoThis(New Customer("Meyer")) 
+0

非常感謝。不知道VB.NET發生了什麼,以及爲什麼它抱怨。我開始了一個新項目,並且工作。非常感謝你! – tmighty

1

已經有一段時間,因爲我做了VB .NET,但我認爲你需要添加的過載關鍵字,因此,它將成爲:

Public Overloads Sub DoThis(Byval CustomerName As String) 
Public Overloads Sub DoThis(Byval CustomerID As Integer) 
Public Overloads Sub DoThis(Byval CustomerID As Integer, ReferenceID As Integer) 
+0

在這種情況下,您不需要* Overloads關鍵字。你*可以*添加它。但只有在區分重載和覆蓋時纔是必需的(儘管如果我沒有記錯的話,即使沒有「Overloads」也只會發出警告)。 –

+0

是的,你是正確的測試,它不是必需的。 – dante671