Question

En C # Quelle est la différence entre:

public static class ClassName {}

public class ClassName {}
Était-ce utile?

La solution

ne peut pas être instancié Une classe statique et ne peut contenir que des membres statiques. Par conséquent, les appels à une classe statique sont aussi:. MyStaticClass.MyMethod(...) ou MyStaticClass.MyConstant

Une classe non statique peut être instancié et peut contenir des membres non statiques (constructeurs d'instance, destructor, indexeurs). Un membre non-statique d'une classe non statique est appelable uniquement par le biais d'un objet:

MyNonStaticClass x = new MyNonStaticClass(...);
x.MyNonStaticMethod(...);

Autres conseils

Tout d'abord, un commentaire sur une réponse posé des questions sur ce que signifie « statiques ». En C # termes, « statique » signifie « relatif au type lui-même, plutôt que d'une instance du type. » Vous accédez à un membre statique (d'un autre type) en utilisant le nom du type au lieu d'une référence ou une valeur. Par exemple:

// Static method, so called using type name
Guid someGuid = Guid.NewGuid();
// Instance method, called on a value
string asString = someGuid.ToString();

Maintenant, les classes statiques ...

classes statiques sont généralement utilisées comme des classes « utilitaires ». L'exemple canonique est probablement System.Math . Il n'a pas de sens de créer une instance de mathématiques - juste « est ». Quelques règles (à la fois « peut » et « ne peut pas »):

  • les classes statiques toujours à partir de object. Vous ne pouvez pas spécifier un autre type de base, ou faire la classe statique implémenter une interface.
  • les classes statiques ne peut pas avoir des membres d'instance -. Toutes les variables, méthodes etc doivent être statiques
  • les classes statiques ne peuvent pas déclarer tous les constructeurs d'instance et le compilateur ne pas créer un constructeur par défaut sans paramètre. (Avant que les classes statiques sont venus en C # 2.0, les gens créent souvent une classe abstraite avec un constructeur privé, ce qui a empêché instanciation. Pas besoin ici.)
  • les classes statiques sont implicitement abstraite (à savoir qu'ils sont compilés à l'IL qui décrit une classe abstraite), mais vous ne pouvez pas ajouter le modificateur abstract vous-même.
  • les classes statiques sont scellées implicitement (à savoir qu'ils sont compilés à l'IL qui décrit une classe fermée), mais vous ne pouvez pas ajouter le modificateur sealed vous-même.
  • les classes statiques peut générique.
  • les classes statiques peut être imbriquées, dans les deux classes non statiques ou statiques.
  • les classes statiques peut ont des types imbriqués, que ce soit non statique ou statique.
  • Seules les classes statiques, de haut niveau non génériques peuvent contenir des méthodes d'extension (C # 3.0).

Une classe statique aussi ne peut pas être héritée de, alors qu'une classe non statique avec les membres statiques peut être hérité de.

public static class ClassName {}

Une classe statique est comme une variable globale: vous pouvez l'utiliser partout dans votre code sans les instancier. Par exemple: ClassName. Après que l'opérateur de points, vous pouvez utiliser une propriété ou une fonction de celui-ci.

 public class ClassName {}

Mais si vous avez la classe non statique, alors vous devez créer une instance de cette classe. Par exemple:

 ClassName classNameObject = new ClassName(); 

Toutes les méthodes / propriétés dans une classe statique doit être statique, alors qu'une classe « normale » peut contenir un mélange d'instance et des méthodes statiques.

Vous ne pouvez instancier (créer des objets de) une classe statique. Et il ne peut contenir que des membres statiques.

Exemple: System.Math

Classe statique peut contenir des membres statiques.

Membre statique peut être utilisé sans instanciation d'une classe de première.

classes et membres statiques sont utilisés pour créer des données et des méthodes qui peuvent être accessibles sans créer une instance (en utilisant le mot-clé new, ils ne peuvent pas avoir un constructeur) de la classe.

classes statiques peuvent être déclarées quand il n'y a pas de dépendance à l'identité propre de l'objet, donc une classe statique doit contenir des membres uniquement statiques.

classes sont chargées par le CLR lorsque le programme ou espace de noms contenant la classe est chargée.

Ils sont également scellés, ne peut être héritée de.

http://www.javaworld.com /javaworld/javaqa/1999-08/01-qa-static2.html - très bon article sur ce sujet. Ceci est pour Java. Mais je pense que devrait devrait même notion en C # aussi.

Variable statique c

une variable locale à une classe en tant que variables d'auto mais variable statique ne disparaissent pas en fonction est plus active.Their valeurs persist.If contrôle revient, les variables statiques ont la même valeur

Fonction statique dans c fonctions qui ne sont pas visibles à des fonctions dans d'autres fichiers.

* membres de données statiques dans cpp * les membres de données peuvent être variables ou fonctions dans cpp statique applique aux deux éléments de données la classe elle-même peut être statique « Il n'y a qu'une seule copie de memberss de données statiques partagées par tous les objets de cette classe » les membres de données statiques ne peuvent accéder qu'aux membres de données statiques

classe statique cette classe ne peut pas instancier des objets

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top