VB.NET使多个SUB具有相同的名称但参数不同

VB.NET使多个SUB具有相同的名称但参数不同,vb.net,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告诉我这样的子系统已经存在了。 谁能告诉我怎么做 谢谢大家! 您向我们展示的内容绝对有效–VB不会

我想使多个子相同的名称,但不同的参数

例如:

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告诉我这样的子系统已经存在了。 谁能告诉我怎么做


谢谢大家!

您向我们展示的内容绝对有效–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)

我已经有一段时间没有使用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)

只要签名是唯一的,这就应该有效。在此上下文中,您不需要使用
重载
关键字。您可以添加它。只有在区分重载和重写时才需要它(即使没有
重载
也只会在我没有记错的情况下发出警告)。非常感谢。不确定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)