Nella mia sottoclasse, dovrei fare riferimento a un metodo non virtuale protetto ereditato come this.Method()
o base.Method()
?questo. vs base. per metodi non virtuali protetti ereditati?
L'utilizzo di this
mi consente di nascondere facilmente il metodo con un nuovo metodo con lo stesso nome. Le chiamate al metodo dovrebbero specificare esplicitamente lo base
solo quando è certo che solo l'implementazione della classe base deve essere chiamata in modo specifico?
si dovrebbe sempre chiamare this.Method() quando si chiama e si esegue una chiamata base :: Method() dai metodi sovrascritti implementati all'interno della classe derivata. In questo modo, in futuro, quando esegui l'override di qualcosa, non devi andare in giro a fare una base.Method(); –
Non è un metodo virtuale e non può essere sovrascritto. I metodi non virtuali possono essere nascosti. – Monstieur
Perché non ci si riferisce semplicemente a 'Method()'? Se 'this' lo nasconde con il suo' Method() 'allora verrà chiamato. In caso contrario, verrà chiamato 'base.Method()'. Questo è stato scelto come comportamento predefinito; probabilmente per buone ragioni.^_^ – Corak