2

同じ名前でパラメータが異なる複数のサブを作成したいと思います。

例えば:

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

2 に答える 2

7

あなたが私たちに示したことは絶対に機能します–VBはこれについて文句を言いません。

これはオーバーロードと呼ばれ、.NETの重要な機能です。ただし、これを機能させるには、すべてのオーバーロードに対してシグニチャ(つまり、パラメータタイプリスト)が厳密に区別されていることを確認する必要があります。

個別のパラメータタイプリストの重要性を示す例を次に示します。

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

潜水艦ははっきりと見えます。しかし、VBは次の呼び出しをどのように処理する必要がありますか?

DoThis("Meyer")

「Meyer」が顧客名であるか製品名であるかを知ることはできません(実際、どちらかである可能性があります!)。したがって、VBはこれらの宣言を禁止しています。ただし、明確であるため、以下は絶対に問題ありません。

Sub DoThis(Customer As Customer)
Sub DoThis(Product As Product)
DoThis(New Customer("Meyer"))
于 2012-12-04T13:12:33.167 に答える
1

VB .NETを実行してからしばらく経ちましたが、Overloadsキーワードを追加する必要があると思うので、次のようになります。

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)
于 2012-12-04T13:13:08.177 に答える