Comprendre les méthodes abstraites statiques en C #
Les méthodes statiques abstraites en C # sont une caractéristique qui soulève la curiosité entre les développeurs. Tout en travaillant avec des fournisseurs, on peut rencontrer un scénario où ils souhaitent créer une classe abstraite avec une méthode statique abstraite. L'exploration des raisons de l'absence de cette fonctionnalité fournit une compréhension plus claire.
Méthodes statiques: un look plus profond
Les méthodes statiques sont différentes de méthodes d'instance en ce qu'elles ne nécessitent pas Instanciation d'objet pour accéder. Ils sont invoqués par le nom de classe, plutôt que par une référence d'objet. Le code de langue intermédiaire (IL) généré pour les appels de méthode statique nomme directement la classe qui définit la méthode, quelle que soit la classe d'appel.
Exemple: Résolution de la méthode
illustrer ceci, considérez le code suivant:
public class A { public static void Test() { } } public class B : A { } class Program { static void Main(string[] args) { B.Test(); } }
Malgré l'appel de la méthode via la classe B, le code IL réel généré ressemble à ceci:
.entrypoint .maxstack 8 L0000: nop L0001: call void ConsoleApplication1.A::Test() L0006: nop L0007: ret
remarquez que l'appel est passé à A.Test, même si le code source a utilisé B.Test. Cela démontre que l'appel de méthode statique est résolu au temps de compilation en fonction de la classe qui définit la méthode, pas la classe d'appels.
méthodes virtuelles et appels statiques
virtuels virtuels Les méthodes permettent un comportement polymorphe en permettant différentes implémentations de la même méthode dans les classes dérivées. Cependant, les appels statiques sont non virtuels dans .NET, car ils ciblent directement une méthode spécifique basée sur le nom de classe. Par conséquent, les méthodes statiques virtuelles ou abstraites ne serviraient pas à un objectif pratique en c #.
Conclusion
En raison du fait que les méthodes statiques en C # sont invoquées à travers des noms de classe avec Aucun polymorphisme, le concept de méthodes statiques abstraites n'a pas de cas d'utilisation significatif. Par conséquent, il n'est pas pris en charge par la langue.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3