Pourquoi vous pouvez le faire en C#?Pourquoi vous pouvez créer une auto-évaluation de classe dans la méthode principale de la classe
class Test
{
static void Main()
{
Test test = new Test();
}
}
Pourquoi vous pouvez le faire en C#?Pourquoi vous pouvez créer une auto-évaluation de classe dans la méthode principale de la classe
class Test
{
static void Main()
{
Test test = new Test();
}
}
Vous pouvez créer de nouvelles instances de toute non abstraite, classe non statique y compris votre propre où que vous pouvez écrire le code ...
test n'est pas une classe statique, même si elle n'a pas de méthodes non statiques. Il obtient toujours un constructeur par défaut s'il n'y en a pas. Donc vous pouvez l'appeler.
class Foo
{
}
static class Bar
{
static void Baz()
{
// you can create an instance of class Foo
Foo f = new Foo();
}
}
Pourquoi ne pourriez-vous pas? Main() est une méthode statique. (Edit: De toute façon, vous pouvez créer de nouvelles instances de classes non-abstraites et non-statiques presque n'importe où.Voir
Vous pouvez créer un nouveau test même dans des méthodes non statiques. –
Vous avez raison, bien sûr. Upvoted votre réponse et ajusté la mienne en conséquence. – MatthewKing
Vous pouvez le faire, car Main est statique. Il fonctionne sans aucune instance. Ainsi, ailleurs dans le code, vous pouvez appeler Test.Main directement sans avoir à en créer une instance.
Vous pouvez créer un nouveau test même dans des méthodes non statiques. –
Pourquoi pas? Je viens d'essayer et il fonctionne
Une application réelle de ce comportement est la Singleton Pattern. Maintenant que vous le savez - ne l'utilisez pas;)
Pourquoi le feriez-vous?
Un programme orienté objet bien conçu est un graphe d'objets et de sous-objets. Cependant, les points d'entrée aux programmes sont généralement très procéduraux. Créer une instance d'un objet racine (qui crée ensuite des sous-objets, etc.) est un bon moyen d'amorcer votre graphe d'objets.
C'est pourquoi vous voyez des choses comme Application.Run(new MyClass());
dans les méthodes principales statiques.
Pourquoi ne pourriez-vous pas le faire? – fearofawhackplanet