以下是代码:
Public Class GridModel
Public DataSource As IDataSource
End Class
Public Class GridModel(Of TDataItem)
Inherits GridModel
Public DataSource As IDataSource(Of TDataItem)
End Class
我原以为这不会编译,因为这两个成员具有相同的名称,并且只有返回类型不同,但VB编译器允许它。为什么编译器不阻止这个?
答案 0 :(得分:2)
为什么编译器不阻止这种情况?
Here is an answer from Programmers' StackExchange.
根据MSDN,
如果派生类变量在基类中隐藏变量,则为它 隐藏基类版本。
和
但是,您可以通过使用MyBase关键字对其进行限定来访问基类变量。
通常,一旦发生这种情况就会发出警告。
答案 1 :(得分:0)
当我将代码复制到IDE中时,我收到以下警告:
变量'DataSource'与基础中的变量'DataSource'冲突 class'GridModel'并且应该声明为'Shadows'。
这是你的解释,即派生类中的成员正在遮蔽基类中的成员。