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 回答