StyleCop hat eine Regel zur Verwendung von "this". Präfix für aufrufende Klassenmitglieder (SA1101).
Entspricht diese Regel einem Member (z. B. einer Methode) einer Klasse, die von ihrer Basisklasse geerbt wird.
Beispiel:
%Vor%Ich weiß, dass dies nur der besseren Lesbarkeit dient.
Die Dokumentation für die StyleCop-Regel SA1101 erwähnt dies tatsächlich:
Ein Verstoß gegen diese Regel tritt immer dann auf, wenn der Code einen Aufruf an ein Instanzelement der lokalen Klasse oder eine Basisklasse enthält, dem kein 'this' vorangestellt ist.
(Hervorhebung von mir hinzugefügt). Also ja, die Regel erfordert this.
bei jedem Zugriff auf ein Instanzmitglied, unabhängig davon, ob dieses Mitglied in der lokalen Klasse oder geerbt von einer Basisklasse ist.
Wenn Sie an die Regeln für die Objektvererbung denken, obwohl F1()
tatsächlich für BaseClass
deklariert ist, wird sie von ChildClass
geerbt, so dass es gültig ist, sie als this.F1()
zu bezeichnen. Das ist es, was StyleCop dir sagt. Durch Voranstellen des Aufrufs mit this
wird es unzweideutig, dass Sie die Methode F1()
Instanz der aktuellen Laufzeitinstanz der Klasse aufrufen.
Tatsächlich ist es tatsächlich synonym, sie als F1()
oder this.F1()
aufzurufen, aber die Bedeutung / Absicht wird klarer, wenn das this
Präfix verwendet wird.
Sie sollten das Präfix base
hier überhaupt nicht verwenden (obwohl es kompiliert wird), weil F1()
nicht virtuell ist und in ChildClass
überschrieben wird. Der einzige Grund für die Verwendung des Präfix base
ist, wenn Sie ein virtuelles Basisklassenmitglied überschrieben haben und dieses Basisklassenmitglied explizit innerhalb des übergeordneten Elements aufrufen möchten. Wenn Sie tatsächlich das Präfix base
verwenden, ohne dass F1()
virtuell ist, würde eigentlich funktionieren, bis Sie F1()
virtuell erstellt und eine Überschreibung in ChildClass
hinzugefügt haben. An diesem Punkt würden Aufrufe von base.F1()
weiterhin BaseClass.F1()
aufrufen und nicht die neue Überschreibung in ChildClass
.
Ich benutze gerne Base. base.F1 () für Ihren Fall. Dies verhindert, dass versehentlich auf eine lokale Variable verwiesen wird, und erinnert visuell daran, woher das Mitglied kam.
Tags und Links c# coding-style stylecop this