2015-03-02 92 views
0

下面的代碼:爲什麼這個重複的成員不會導致編譯器錯誤?

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

請刪除asp.net MVC和Razor的標籤。這些與這個問題沒有直接關係 – 2015-03-02 22:07:54

回答

2

爲什麼編譯器不能阻止呢?

Here is an answer from Programmers' StackExchange.

根據MSDN

如果派生類變量的陰影在基類的變量,它 隱藏基類版本。

而且,

但是,您可以通過使用MyBase關鍵字限定它訪問的基類變量。

通常,發生這種情況時會發出警告。

0

當我是你的代碼複製到IDE中,我得到以下警告:

變量「數據源」與基 類的GridModel「變量「數據源」衝突,應該聲明爲「Shadows」。

這就是你的解釋,即派生類中的成員正在映射基類中的成員。

相關問題