37 votes

Pourquoi le point d'entrée de la méthode main dans la plupart des programmes C# est-il statique ?

Pourquoi le point d'entrée de la méthode main dans la plupart des programmes C# est-il statique ?

60voto

JaredPar Points 333733

Pour appeler une méthode d'instance, vous avez besoin d'une instance d'un objet. Cela signifie que pour lancer votre programme, le CLR doit créer une instance de, par exemple, l'objet Program afin d'appeler la méthode Main . Ainsi, le constructeur de Program s'exécuterait avant Main ce qui va à l'encontre de l'objectif d'avoir un principal ensemble.

16voto

Eric Lippert Points 300275

Je retournerais la question. Quel est l'avantage décisif de l'implémentation de la fonctionnalité qui permet à Main d'être une méthode d'instance ? Les fonctionnalités sont coûteuses ; s'il n'y a pas d'avantage incontestable, elles ne sont pas implémentées.

Avez-vous une bonne raison pour laquelle Main devrait être autorisée à être une méthode d'instance ?

4voto

rerun Points 15285

Conceptuellement, vous n'avez qu'une seule instance d'une méthode statique. Et une méthode statique correspond bien à l'idiome d'un point de départ unique pour un programme. Les concepteurs du langage auraient pu créer une classe de programme spéciale à utiliser avec une méthode main, mais ils ont choisi de créer une fonction statique unique comme point d'entrée. À certains niveaux, il s'agit simplement d'un choix de conception.

1voto

David Morton Points 10519

Car sinon, il faudrait créer un objet, et l'exécution du constructeur pourrait avoir des effets secondaires négatifs.

1voto

Vlad Points 23480

Comment créer l'instance de votre classe avant le main autrement ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X