2010-03-30 5 views

Répondre

3

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(); 
    } 
} 
2

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

+0

Vous pouvez créer un nouveau test même dans des méthodes non statiques. –

+0

Vous avez raison, bien sûr. Upvoted votre réponse et ajusté la mienne en conséquence. – MatthewKing

1

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.

+0

Vous pouvez créer un nouveau test même dans des méthodes non statiques. –

0

Pourquoi pas? Je viens d'essayer et il fonctionne

0

Une application réelle de ce comportement est la Singleton Pattern. Maintenant que vous le savez - ne l'utilisez pas;)

0

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.

Questions connexes