vb.netで同じ関数を同時にオーバーライドしてオーバーロードすることは可能ですか? このようなもの:
Public Overrides overloads Function Delete(ByVal code As Integer) As Boolean
vb.netで同じ関数を同時にオーバーライドしてオーバーロードすることは可能ですか? このようなもの:
Public Overrides overloads Function Delete(ByVal code As Integer) As Boolean
クラスに同じ名前で異なる署名を持つ複数のメソッドが含まれている場合は、overloads キーワードを使用できます。以下のコードを見て、役に立つ場合は答えをマークしてください
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
このように考えると参考になるかもしれません。関数に 2 つの異なることを要求しています。
オーバーロードは、基本的に、異なるパラメーター セットを使用して同じ関数を呼び出します。
Override は、同じ関数を同じパラメーターで呼び出して、別のことを行います。
いいえ、それはできません。メソッドのシグネチャを変更すると (これが唯一の理由です)、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