В VB.net, как два свойства только для чтения без параметров могут перегружать друг друга? - PullRequest
1 голос
/ 13 мая 2011

Я заметил, что класс может "перегружать" свойство только для чтения своего родительского класса, даже если это не разрешено внутри класса.Я не понимаю, почему это разрешено или что (если что-либо) оно выполняет.

Class myClass
    ReadOnly Property SomeProp As Integer
        Get
            Return 50
        End Get
    End Property
End Class

Class mySubClass
    Inherits myClass    
    Overloads ReadOnly Property SomeProp As Integer
        Get
            Return 12
        End Get
    End Property
End Class

Подпись mySubClass.SomeProp идентична myClass.Prop - как первый может перегрузить последний?

На практике это похоже на Shadows, это правда?

1 Ответ

0 голосов
/ 13 мая 2011

По сути, да, с перегрузкой у вас будут myClass :: SomeProp и mySubClass :: SomeProp

Учитывая экземпляр mySubClass, вызовы SomeProp преобразуются в mySubClass :: SomeProp как наилучшее совпадение. Однако, поскольку это перегрузки, а не тени, что-то вроде

Readonly Property SomeProp(x as Integer) as integer)
  Get
    Return 13
  End Get
End Property

не будет компилироваться, так как в нем отсутствует декоратор Overloads.

...