Previous
属性Other1
和Other2
类的行为差异是什么.
注意,除了超载的返回类型Previous
的属性Other2
已经改变为Other2
同时保持原样Base
的Other1
.
Public Class Base
Private _Previous as Base
Protected Overridable ReadOnly Property Previous As Base
Get
Return _Previous
End Get
End Property
Public Sub New(Previous as Base)
_Previous = Previous
End Sub
End Class
Public Class Other1
Inherits Base
Private _Parent as SomeType
Protected Overrides ReadOnly Property Previous As Base
Get
Return _Parent.Previous.Something
End Get
End Property
Public Sub New(Parent as SomeType)
MyBase.New(Nothing)
_Parent = Parent
End Sub
End Class
Public Class Other2
Inherits Base
Private _Parent as SomeType
Protected Overloads ReadOnly Property Previous As Other2
Get
Return _Parent.Previous.Something
End Get
End Property
Public Sub New(Parent as SomeType)
MyBase.New(Nothing)
_Parent = Parent
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
Dav*_*b60 17
在我对Jim Wooley的回答发表评论之后,"它看起来像是影响了超载的财产." 我看到了这篇文章中的亮点.
因此,Other2类中的Overloads 更像是遮蔽而不是覆盖.本文中有一条评论特别具有启发性:
之所以产生混淆是因为关键字"Overloads"并不是C#程序员认为传统OO意义上的过载.这是一种特定于VB.Net的隐藏类型.在大多数情况下,您实际上可以将关键字SHADOWS与OVERLOADS交换,并且行为是相同的.不同之处在于您有一个具有多个重载方法签名的基类.如果在具有匹配名称的子类和SHADOWS关键字中声明方法,它将隐藏基类中该方法的每个重载.如果改为使用OVERLOADS关键字,它将仅隐藏具有相同签名的基类方法.
归档时间: |
|
查看次数: |
18881 次 |
最近记录: |