Если вы думаете о правилах наследования объектов, даже если F1()
фактически объявлено в BaseClass
, оно наследуется ChildClass
, поэтому его можно назвать this.F1()
. Это то, что вам говорит StyleCop. Приставляя префикс к this
, становится однозначным, что вы вызываете метод F1()
instance текущего экземпляра времени выполнения класса.
На самом деле, называя его F1()
или this.F1()
, на самом деле являются синонимами, но смысл / намерение становится понятнее при использовании префикса this
.
Вам вообще не следует использовать префикс base
(даже если он скомпилируется), поскольку F1()
не является виртуальным и переопределяется в ChildClass
. Единственная причина использовать префикс base
- это когда вы переопределили виртуальный член базового класса и хотите явно вызвать этот элемент базового класса из переопределяющего члена. Если бы вы действительно использовали префикс base
без виртуального F1()
, все действительно работало бы, пока вы не сделали виртуальный F1()
и не добавили переопределение в ChildClass
. В этот момент любые вызовы base.F1()
будут продолжать вызывать BaseClass.F1()
, а не новые переопределения в ChildClass
.