Я знал, что 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 в производном классе"
консоль печатает символ «и».
Кто-нибудь знает причину этого?