シャドーやオーバーロードについてはVB.netが非常に奇妙だと知っていましたが、これは完全にわかりません。関数で使用するとシャドウが奇妙に動作する
次のようなモデルで作業しています。親クラス:
Public Class Base
Function F() As String
Return "F() in Base Class"
End Function
Function F(ByVal n As Integer) As String
Return "F(" + n.ToString() + ") in Base Class"
End Function
End Class
と、この:
Class Derived
Inherits Base
Shadows Function F() As String
Return "-"
End Function
End Class
次のことを実行している場合:
Sub Main()
Dim parent As Base = New Base()
Dim child As Derived = New Derived()
Console.WriteLine(parent.F())
Console.WriteLine(parent.F(1))
Console.WriteLine("------------")
Console.WriteLine(child.F())
Console.WriteLine(child.F(1)) 'this should not compile, due to the shadow keyword.
Console.Read()
End Sub
IndexOutOfRangeExceptionがスローされます。さらに、(派生クラスで)変更するとき: " - " の場合は "派生クラスのFunc"を返す コンソールは文字 'u'を出力します。 誰かがこれの理由を知っていますか?