我可以在vb.net中重写和重载相同的函数吗?

我可以在vb.net中重写和重载相同的函数吗?,vb.net,Vb.net,在vb.net中是否可以同时重写和重载相同的函数? 大概是这样的: Public Overrides overloads Function Delete(ByVal code As Integer) As Boolean 不,您不能这样做,因为一旦更改了方法的签名(这是您希望这样做的唯一原因),重写将无法找到要重写的基础方法 但是,如果不使用重写版本,则可以让重写或重载调用相应的内部方法或引发异常 Public Overrides Function Delete(ByVal code As I

在vb.net中是否可以同时重写和重载相同的函数? 大概是这样的:

Public Overrides overloads Function Delete(ByVal code As Integer) As Boolean

不,您不能这样做,因为一旦更改了方法的签名(这是您希望这样做的唯一原因),重写将无法找到要重写的基础方法

但是,如果不使用重写版本,则可以让重写或重载调用相应的内部方法或引发异常

Public Overrides Function Delete(ByVal code As Integer) As Boolean
    Throw New Exception("Please use the two parameter version")
End Function

Public Overloads Function Delete(ByVal code As Integer, param2 As Boolean) As Boolean
    MessageBox.Show("This is the right one")
    Return True
End Function

如果类包含多个具有相同名称和不同签名的方法,则可以使用重载关键字。请查看下面的代码,如果有用,请标记答案

Public Class Base

   Public Overridable Function Delete(code As Integer) As Boolean
     Return True
   End Function

End Class

Public Class Derived
Inherits Base

Public Overloads Overrides Function Delete(code As Integer) As Boolean
    Return MyBase.Delete(code)
End Function
Public Overloads Function Delete(code As Integer, id As Integer) As Boolean
    Return MyBase.Delete(code)
End Function

End Class

这样想可能会有帮助。你要求函数做两件不同的事情

重载使用不同的参数集调用基本相同的函数


Override使用相同的参数调用相同的函数以执行不同的操作。

尝试时会发生什么?它能用吗?它不能编译。它显示一个错误“Delete不能声明为”overrides“,因为它不重写基类中的函数。除此之外,装饰物在这里交换;派生类中的第二个方法是重写基类方法的方法,而不是第一个方法。