为什么这个重复的成员不会导致编译器错误?

时间:2015-03-02 21:54:24

标签: .net vb.net

以下是代码:

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编译器允许它。为什么编译器不阻止这个?

2 个答案:

答案 0 :(得分:2)

  

为什么编译器不阻止这种情况?

Here is an answer from Programmers' StackExchange.

根据MSDN

  

如果派生类变量在基类中隐藏变量,则为它   隐藏基类版本。

  

但是,您可以通过使用MyBase关键字对其进行限定来访问基类变量。

通常,一旦发生这种情况就会发出警告。

答案 1 :(得分:0)

当我将代码复制到IDE中时,我收到以下警告:

  

变量'DataSource'与基础中的变量'DataSource'冲突   class'GridModel'并且应该声明为'Shadows'。

这是你的解释,即派生类中的成员正在遮蔽基类中的成员。