Quelle est la différence entre
public static void Main()
et
private static void Main()
dans une application console C #? Plus précisément en ce qui concerne la méthode Main()
(je comprends les différences entre public
et private
).
Pour agir comme point de départ dans votre application, la méthode Main
ne doit pas nécessairement être public
.
Si vous décidiez de le faire public
, il serait possible qu'il soit appelé à partir d'autres classes ou assemblys. En règle générale, vous n'aurez pas besoin de le faire, vous pouvez donc le conserver private
.
Un cas d'utilisation possible pour le rendre public
serait d'autoriser les tests automatisés à l'invoquer.
La différence entre les deux est la seule différence entre les modificateurs d'accès public
et private
car les deux sont valides. Cela dépend totalement de l'utilisation de l'application à utiliser.
Si vous souhaitez lancer le point d'entrée par un programme externe (c'est-à-dire l'utiliser comme API à des fins de test), vous devrez peut-être le rendre public afin qu'il soit accessible.
Si vous savez qu'il n'y a pas d'utilisation externe pour l'application, il est préférable de la rendre privée afin qu'aucune application externe n'y ait accès.
Dans la plupart des cas, cela ne fera aucune différence. Microsoft préconise de rendre Main privé.
La seule vraie valeur à faire cela (pour autant que je sache) est qu'elle empêchera la méthode Main d'être invoquée directement par la base de code d'une autre application.
Une bonne discussion à ce sujet est disponible ici
Mis à part la fonctionnalité de modificateur d'accès public et privé normal, rien. Les deux sont des points d'entrée valides.
Voir: Pourquoi le point d'entrée est-il autorisé à être privé? et Pourquoi la méthode principale est-elle privée?
Le principal est marqué comme le point d'entrée pour l'exécution dans l'exe lui-même quand il est privé, donc rien de l'extérieur ne peut y accéder
Le rendre public rendra la méthode accessible de l'extérieur
Lire pour plus de précisions http://social.msdn.Microsoft.com/Forums/vstudio/en-US/9184c55b-4629-4fbf-ad77-2e96eadc4d62/why-is-main-in-c-not- a-public-static-? forum = csharpgeneral
Il y a une différence, car le premier est public et le second est privé, donc lorsque vous essayez d'utiliser le premier en dehors de la classe, cela fonctionnera très bien, mais ne fonctionnera pas avec le second.
Cependant, il n'y a aucune différence si vous essayez d'en faire un point d'entrée dans votre application. La méthode du point d'entrée peut être publique ou privée, peu importe.
public et privé sont les spécificateurs d'accès.
nous utilisons,
public static void Main()
car pour exécuter le programme, vous devez appeler votre classe dans laquelle cette méthode Main () est présente, pour cela vous avez besoin que votre méthode Main () soit publique sinon elle ne sera pas accessible en dehors de la classe.
Et la raison pour laquelle il est statique est, car, il doit être accessible sans créer aucun objet de cette classe .i.e. au niveau de la classe.
La déclaration privée ou publique est son modificateur d'accès, un modificateur d'accès privé le rend inaccessible aux objets externes où un modificateur d'accès public le rend accessible aux objets externes. exemple d'utilisation:
Disons que nous avons une classe:
class myClass{
public void test(){
//do something
}
}
Nous créons une instance de cette classe:
myClass mClass=new myClass();
Pour accéder à sa fonction membre, vous devez aller:
mClass.test();
S'il avait un modificateur d'accès privé, vous obtiendriez une erreur de compilation disant qu'il est inaccessible.
Et juste pour la connaissance, pour accéder à un membre sans créer une instance d'une classe, vous devez également rendre ce membre statique, par exemple:
class myClass{
public static void test(){
//do something
}
}
Donc, pour y accéder maintenant, il vous suffit de faire simplement:
myClass.test();
(Notez que tous les membres accédés dans un membre statique doivent également être statiques)
Par exemple, lorsque vous souhaitez ajouter un point d'entrée pouvant appeler de l'extérieur d'une classe ou d'un assembly, vous devez définir public
mais si ce n'est pas important, utilisez private
.
Basé sur le niveau d'accès.
private--> access to own class
public --> open to alll