Dupliqué possible: strong>
Quelle est l'utilisation d'une classe statique p>Quels sont les avantages de déclarer une classe statique? p>
xxx pré> y a-t-il autre que "il ne peut pas être instancié"?
Pourquoi voudriez-vous une classe statique, pour quelles raisons une classe devrait-elle être statique?
Est "Toute classe doit être déclarée statique à moins que cela soit destiné à être instancié" une bonne règle de pouce? P> blockquote>
5 Réponses :
Vous avez besoin d'une classe statique pour créer des méthodes d'extension. P>
Les classes statiques sont utiles comme conteneurs pour les fonctions d'utilité et les constantes. Si la classe ne représente pas un objet et n'est utilisée que à cet effet, il est logique de le déclarer comme statique. P>
Une classe d'utilité, qui ne déclare que des méthodes statiques (comme System.IO.FILE) n'est pas instanciée, de sorte que c'est généralement statique. p>
Et vous avez raison, je trouve que c'est un bon usage. Singleton est différent, car il est censé être instancié en privé. P>
Les classes statiques et les membres de la classe sont utilisé pour créer des données et des fonctions qui peut être consulté sans créer un instance de la classe. Classe statique Les membres peuvent être utilisés pour séparer les données et comportement indépendant de toute identité d'objet: les données et les fonctions ne changent pas quel que soit Qu'advient-il de l'objet. Statique Les classes peuvent être utilisées quand il n'y a pas données ou comportement dans la classe qui dépend de l'identité d'objet. P> blockQuote>
pris directement de MSDN. Cela l'explique beaucoup mieux que je peux. Le fait essentiel ici est que l'objet persiste tout au long de la vie. P>
Les méthodes d'extention doivent également être écrites dans des classes statiques. J'ai tendance à les utiliser pour des étendues stresses ou des étendues de collecte. P>
Si une classe a le modificateur statique, alors: p>
Le premier point est le plus important cependant, imo. Vous communiquez l'intention du compilateur et des autres développeurs. P>
Dans un projet .NET code> est-il OK pour créer une classe statique pour passer des valeurs variables entre les pages ou un risque impliqué ici. J'ai entendu dire que nous devrions éviter d'utiliser des variables globales et des classes statiques à moins que le contexte ne soit très clair. Dans mon cas, j'utilise une classe statique pour simplement affecter une valeur d'une variable de page1 (dire, mysticclass.city = "London"), puis l'accédez à partir de la page2 comme mysticclass.city. Dans un cas aussi simple (avec seulement quelques membres de la classe), est-il correct d'utiliser une classe statique juste à des fins exclusives de réussite des valeurs variables entre les pages de la même application?
@nam: pages dans quel type d'application? Pour une application Web, c'est définitivement i> une mauvaise idée - il ne gère pas la mise à l'échelle sur plusieurs serveurs et ne conserve pas les données séparées pour différents utilisateurs. Dans une application de bureau, je dirais que ce n'est toujours pas un design propre ou testable, mais il n'a pas le même type de problèmes.
Désolé, j'ai oublié de mentionner wpf app code>. Mais oublier, en fait, s'est avéré être bon pour moi puisque votre réponse a même couvert les applications Web, également (merci). J'ai une impression que d'utiliser une classe statique dans pas nécessairement une mauvaise pratique mais doit être utilisé à bon escient .
@nam: Utiliser une classe statique pour stocker l'état mutable global i> (ce que vous proposez) est généralement une mauvaise idée imo. L'État global est difficile à motiver et difficile à tester. Les classes statiques qui ne stockent que l'état immuable et contiennent des méthodes d'état sont bien OMI.