我想制作多个名称相同但参数不同的潜艇。
例如:
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 告诉我这样的子程序已经存在。有人可以告诉我我该怎么做吗?
谢谢!
我想制作多个名称相同但参数不同的潜艇。
例如:
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)
DoThis(New Customer("Meyer"))
自从我做 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)