Freigeben über


Virtuelle Member

Hinweis

Diese Inhalte wurden mit Genehmigung von Pearson Education, Inc. aus Framework Design Guidelines nachgedruckt: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Diese Ausgabe wurde 2008 veröffentlicht, und das Buch wurde seitdem in der dritten Ausgabe vollständig überarbeitet. Einige der Informationen auf dieser Seite sind möglicherweise veraltet.

Virtuelle Member können überschrieben werden, wodurch das Verhalten der Unterklasse geändert wird. Sie ähneln den Rückrufen in Bezug auf die Erweiterbarkeit, die sie bereitstellen, aber sie sind besser in Bezug auf die Ausführungsleistung und den Arbeitsspeicherverbrauch. Außerdem fühlen sich virtuelle Member in Szenarien, in denen eine besondere Art von vorhandenem Typ (Spezialisierung) erstellt werden muss, natürlicher an.

Die Leistung virtueller Member ist besser als bei Rückrufen und Ereignissen, jedoch nicht besser als bei nicht virtuelle Methoden.

Der Hauptnachteil von virtuellen Membern besteht darin, dass das Verhalten eines virtuellen Members nur zum Zeitpunkt der Kompilierung geändert werden kann. Das Verhalten eines Rückrufs kann zur Laufzeit geändert werden.

Virtuelle Member sind ebenso wie Rückrufe (und vielleicht noch mehr als Rückrufe) aufwendig zu entwerfen, zu testen und zu warten, da jeder Aufruf eines virtuellen Members auf unvorhersehbare Weise überschrieben werden und beliebigen Code ausführen kann. Außerdem ist in der Regel viel mehr Aufwand erforderlich, um den Vertrag der virtuellen Member klar zu definieren, sodass die Kosten für deren Entwurf und Dokumentation höher sind.

❌ Machen Sie Member NICHT virtuell, es sei denn, Sie haben einen guten Grund dafür und sind sich aller Kosten bewusst, die mit der Entwicklung, dem Testen und der Pflege virtueller Member verbunden sind.

Virtuelle Member sind weniger tolerant in Bezug auf Änderungen, die an ihnen vorgenommen werden können, ohne die Kompatibilität zu beeinträchtigen. Außerdem sind Sie langsamer als nicht virtuelle Member, hauptsächlich, weil Aufrufe von virtuellen Membern nicht inline erfolgen.

✔️ Erwägen Sie, die Erweiterbarkeit nur auf das absolut Notwendige zu beschränken.

✔️ BEVORZUGEN Sie geschützten Zugriff gegenüber öffentlichem Zugriff für virtuelle Member. Öffentliche Member sollten Erweiterbarkeit durch Aufrufen eines geschützten virtuellen Members bereitstellen (wenn erforderlich).

Die öffentlichen Member einer Klasse sollten den richtigen Funktionssatz für direkte Consumer dieser Klasse bereitstellen. Virtuelle Member sind dazu gedacht, in Unterklassen überschrieben zu werden, und der geschützte Zugriff ist eine gute Möglichkeit, alle virtuellen Erweiterungspunkte für die entsprechende Verwendung zu gestalten.

Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit Genehmigung von Pearson Education, Inc aus Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen