statische abstrakte Methoden in C#
abstrakte statische Methoden in C# sind ein Merkmal, das die Neugier der Entwickler aufwirft. Während der Arbeit mit Anbietern kann man auf ein Szenario stoßen, in dem sie eine abstrakte Klasse mit einer abstrakten statischen Methode schaffen möchten. Die Erforschung der Gründe für das Fehlen dieser Funktion liefert ein klareres Verständnis. Zugriff auf Objekt -Instanziierung. Sie werden durch den Unterrichtsnamen und nicht durch eine Objektreferenz aufgerufen. Der für statische Methoden generierte Intermediate Language -Code (IL) nennt direkt die Klasse, die die Methode unabhängig von der Anrufklasse definiert. Illustrieren Sie dies, betrachten Sie den folgenden Code:
öffentliche Klasse a { öffentliche statische Leerraum -Test () { } } öffentliche Klasse B: a { } Klassenprogramm { statische void main (String [] args) { B.Test (); } } trotz der aufgerufenen Methode über die B -Klasse ähnelt der tatsächliche IL -Code, der generiert ist:
. .Maxstack 8 L0000: NOP L0001: Rufen Sie void ConsoleApplication1.A :: test () an L0006: NOP L0007: ret
Beachten Sie, dass der Anruf an A.Test getätigt wird, obwohl der Quellcode B.Test verwendet wird. Dies zeigt, dass der statische Methode -Anruf zur Kompilierung der Zeit auf der Basis der Klasse gelöst wird, die die Methode definiert, und nicht die Anrufklasse.
virtuelle Methoden und statische Anrufe
public class A { public static void Test() { } } public class B : A { } class Program { static void Main(string[] args) { B.Test(); } }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3