0

vb.netで同じ関数を同時にオーバーライドしてオーバーロードすることは可能ですか? このようなもの:

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

3 に答える 3

2

クラスに同じ名前で異なる署名を持つ複数のメソッドが含まれている場合は、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
于 2013-06-22T20:36:01.633 に答える
0

このように考えると参考になるかもしれません。関数に 2 つの異なることを要求しています。

オーバーロードは、基本的に、異なるパラメーター セットを使用して同じ関数を呼び出します。

Override は、同じ関数を同じパラメーターで呼び出して、別のことを行います。

于 2013-06-22T20:41:12.737 に答える
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 に答える