我知道当谈论阴影和重载时,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异常。此外,在更改时(在派生类中): 返回“ - ” for 返回“派生类中的函数” 控制台打印字符'u'。 有人知道这个的原因吗?