Pourquoi en C#, dans une application console, dans la classe "program", qui est la classe par défaut, toutes les méthodes doivent être statiques avec
static void Main(string[] args)
Pourquoi en C#, dans une application console, dans la classe "program", qui est la classe par défaut, toutes les méthodes doivent être statiques avec
static void Main(string[] args)
Les fonctions membres ne avoir pour être statiques ; mais s'ils le sont no statique, qui nécessite l'instanciation d'un fichier Program
afin d'appeler une méthode membre.
Avec les méthodes statiques :
public class Program
{
public static void Main()
{
System.Console.WriteLine(Program.Foo());
}
public static string Foo()
{
return "Foo";
}
}
Sans méthodes statiques (en d'autres termes, nécessitant l'instanciation de l Program
):
public class Program
{
public static void Main()
{
System.Console.WriteLine(new Program().Foo());
}
public string Foo() // notice this is NOT static anymore
{
return "Foo";
}
}
Main
doit être statique, car sinon il faudrait dire au compilateur comment instancier la fonction Program
ce qui n'est pas forcément une tâche triviale.
Vous pouvez également écrire des méthodes non statiques, mais vous devez les utiliser comme suit
static void Main(string[] args)
{
Program p = new Program();
p.NonStaticMethod();
}
La seule exigence pour une application C# est que l'assemblage exécutable doit avoir une méthode main statique dans n'importe quelle classe de l'assemblage !
La méthode Main est statique car c'est le point d'entrée du code dans l'assemblage. Il n'y a pas d'instance d'objet au départ, seulement le modèle de classe chargé en mémoire et ses membres statiques, y compris la méthode statique du point d'entrée Main. La méthode Main est prédéfinie par le compilateur C# pour être le point d'entrée.
Une méthode statique ne peut appeler que d'autres méthodes statiques (à moins qu'il n'y ait un gestionnaire d'instance de quelque chose de composé pour l'utilisation). C'est pourquoi la méthode Main appelle d'autres méthodes statiques et que vous obtenez une erreur de compilation si vous essayez d'appeler une méthode non statique (d'instance).
Cependant, si vous créez une instance de n'importe quelle classe, même de la classe Programme elle-même, vous commencez à créer des objets dans votre application sur le tas de la mémoire. Vous pouvez alors commencer à appeler leurs membres d'instance.
Les réponses techniquement correctes sont donc ci-dessus :)
Il convient de souligner qu'en règle générale, il n'est pas souhaitable d'utiliser toutes les méthodes statiques. Créez un objet, comme un formulaire Windows, un contrôleur pour cet objet et orientez votre code vers l'objet plutôt que vers la procédure.
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.
0 votes
Wow... tant de bonnes réponses en si peu de temps... Donc ... vous êtes géniaux ! !! tous ceux qui ont répondu ... merci ! !!