0

是否可以在 vb.net 中同时覆盖和重载相同的函数?像这样的东西:

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

3 回答 3

2

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

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
于 2013-06-22T20:36:01.633 回答
0

不,您不能这样做,因为一旦您更改了方法的签名(这将是您想要这样做的唯一原因),Overrides 将无法找到您想要覆盖的底层方法。

但是,如果不使用覆盖的版本,您可以让覆盖或重载调用适当的内部方法或引发异常。

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
于 2013-06-22T20:33:13.710 回答
0

以这种方式思考它可能会有所帮助。您要求该功能做两件不同的事情。

重载使用一组不同的参数调用基本上相同的函数。

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

于 2013-06-22T20:41:12.737 回答