Vous pouvez utiliser la méthode statique sans créer une instance de cette classe simplement par class_name.static_method_name ();
Javed Akram
Au niveau de la programmation, nous avons le sentiment que nous sommes capables d'appeler une méthode statique sans créer une instance de classe / type. Ce n'est pas le cas en interne . CLR gère en interne une instance spéciale appelée instance de type pour gérer l'appel aux méthodes statiques. Veuillez voir cette réponse. C'est tellement intrigant.
RBT
Réponses:
313
Une staticfonction, contrairement à une fonction régulière ( instance ), n'est pas associée à une instance de la classe.
Une staticclasse est une classe qui ne peut contenir que des staticmembres et ne peut donc pas être instanciée.
C'est donc comme une méthode de classe au lieu d'une méthode d'instance?
Moshe
4
@Moshe: Exactement. Avec une méthode statique, vous n'avez pas besoin d'une instance de la classe pour appeler la méthode, juste la classe.
Binary Worrier
3
Mais existe-t-il en fait une sorte de limitation technique qui empêche d'appeler une méthode statique sur une instance? Si le compilateur le permet, quel est le danger qu'il soit accessible?
kroonwijk le
2
@kroon: Cela n'aurait aucun sens. Les méthodes d'instance prennent en fait simplement une instance comme premier paramètre caché. Les méthodes statiques ne le font pas. Voir mon article de blog: blog.slaks.net/2011/06/open-delegates-vs-closed-delegates.html
SLaks
Où "StaticMethod" est la méthode de classe et "InstanceMethod" est une méthode d'instance de classe SomeClass
Usman Younas
26
D'un autre point de vue: considérez que vous souhaitez apporter des modifications sur une seule chaîne. par exemple, vous voulez mettre les lettres en majuscules et ainsi de suite. vous créez une autre classe nommée "Tools" pour ces actions. il n'y a aucune signification de créer une instance de la classe "Tools" car il n'y a aucun type d'entité disponible à l'intérieur de cette classe (comparez à la classe "Person" ou "Teacher"). Nous utilisons donc un mot-clé statique pour utiliser la classe "Tools" sans en faire aucune instance, et lorsque vous appuyez sur le point après le nom de la classe ("Tools"), vous pouvez avoir accès aux méthodes que vous voulez.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1{classProgram{staticvoidMain(string[] args){Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));Console.ReadKey();}}publicstaticclassTools{publicstaticstringToUpperCase(string str){return str.ToUpper();}}}
Utiliser «faire des modifications sur une chaîne» est un mauvais exemple - les chaînes sont immuables et ne peuvent pas être modifiées. Mais, sinon, l'explication a du sens (en remplaçant une classe non immuable par string)
Flydog57
13
Une méthode, un champ, une propriété ou un événement statique peut être appelé sur une classe même lorsqu'aucune instance de la classe n'a été créée. Si des instances de la classe sont créées, elles ne peuvent pas être utilisées pour accéder au membre statique. Une seule copie des champs et événements statiques existe, et les méthodes et propriétés statiques ne peuvent accéder qu'aux champs statiques et aux événements statiques. Les membres statiques sont souvent utilisés pour représenter des données ou des calculs qui ne changent pas en réponse à l'état de l'objet; par exemple, une bibliothèque mathématique peut contenir des méthodes statiques pour calculer le sinus et le cosinus. Les membres statiques de la classe sont déclarés à l'aide du mot-clé static avant le type de retour du membre
La fonction statique signifie qu'elle est associée à la classe (pas à une instance particulière de classe mais à la classe elle-même) et qu'elle peut être appelée même lorsqu'aucune instance de classe n'existe.
Classe statique signifie que la classe ne contient que des membres statiques.
Lorsque vous ajoutez un mot-clé "statique" à une méthode, cela signifie que l'implémentation sous-jacente donne le même résultat pour n'importe quelle instance de la classe. Inutile de dire que le résultat varie avec le changement de la valeur des paramètres
La variable statique n'est pas liée à l'objet de la classe. Il est accessible en utilisant classname. Tous les objets de la classe partageront une variable statique.
En rendant la fonction statique, cela limitera l'accès de cette fonction dans ce fichier.
Le mot clé static, lorsqu'il est appliqué à une classe, indique au compilateur de créer une seule instance de cette classe. Il n'est alors pas possible de «créer» une ou plusieurs instances de la classe. Toutes les méthodes d'une classe statique doivent elles-mêmes être déclarées statiques.
Il est possible, et souvent souhaitable, d'avoir des méthodes statiques d'une classe non statique. Par exemple, une méthode de fabrique lors de la création d'une instance d'une autre classe est souvent déclarée statique car cela signifie qu'une instance particulière de la classe contenant la méthode factor n'est pas requise.
Pour une bonne explication sur comment, quand et où voir MSDN
Non, une classe statique n'est jamais instanciée. Étant donné que tout est statique, pourquoi voudriez - vous envie de instancier?
Jon Skeet
1
Une staticclasse n'a aucune instance du tout.
SLaks
4
Désolé les gars, je ne comprends pas ... J'ai dit qu'une seule instance est créée et que vous ne pouvez pas en créer une nouvelle. Une seule instance statique est sûrement créée, sinon le code ne serait pas appelable?
Dave Arkley
2
Une classe statique a une instance, en fait deux, ce ne sont tout simplement pas des instances de theType. Une classe statique existera sur le tas en tant qu'objet [Foo] Type (table de recherche de méthode, etc. pour le JIT), et un objet System.Type spécial utilisé pour l'initialisation.
mccainz
Une classe peut être déclarée statique, indiquant qu'elle ne contient que des membres statiques. Il n'est pas possible de créer des instances d'une classe statique à l'aide du mot clé new. Les classes statiques sont chargées automatiquement par le Common Language Runtime (CLR) .NET Framework lorsque le programme ou l'espace de noms contenant la classe est chargé.
Réponses:
Une
static
fonction, contrairement à une fonction régulière ( instance ), n'est pas associée à une instance de la classe.Une
static
classe est une classe qui ne peut contenir que desstatic
membres et ne peut donc pas être instanciée.Par exemple:
Pour appeler
InstanceMethod
, vous avez besoin d'une instance de la classe:la source
D'un autre point de vue: considérez que vous souhaitez apporter des modifications sur une seule chaîne. par exemple, vous voulez mettre les lettres en majuscules et ainsi de suite. vous créez une autre classe nommée "Tools" pour ces actions. il n'y a aucune signification de créer une instance de la classe "Tools" car il n'y a aucun type d'entité disponible à l'intérieur de cette classe (comparez à la classe "Person" ou "Teacher"). Nous utilisons donc un mot-clé statique pour utiliser la classe "Tools" sans en faire aucune instance, et lorsque vous appuyez sur le point après le nom de la classe ("Tools"), vous pouvez avoir accès aux méthodes que vous voulez.
la source
Une méthode, un champ, une propriété ou un événement statique peut être appelé sur une classe même lorsqu'aucune instance de la classe n'a été créée. Si des instances de la classe sont créées, elles ne peuvent pas être utilisées pour accéder au membre statique. Une seule copie des champs et événements statiques existe, et les méthodes et propriétés statiques ne peuvent accéder qu'aux champs statiques et aux événements statiques. Les membres statiques sont souvent utilisés pour représenter des données ou des calculs qui ne changent pas en réponse à l'état de l'objet; par exemple, une bibliothèque mathématique peut contenir des méthodes statiques pour calculer le sinus et le cosinus. Les membres statiques de la classe sont déclarés à l'aide du mot-clé static avant le type de retour du membre
la source
La fonction statique signifie qu'elle est associée à la classe (pas à une instance particulière de classe mais à la classe elle-même) et qu'elle peut être appelée même lorsqu'aucune instance de classe n'existe.
Classe statique signifie que la classe ne contient que des membres statiques.
la source
En peu de temps, vous ne pouvez pas instancier la classe statique: Ex:
Vous ne pouvez pas faire comme ça:
Vous ne pouvez faire que:
la source
Lorsque vous ajoutez un mot-clé "statique" à une méthode, cela signifie que l'implémentation sous-jacente donne le même résultat pour n'importe quelle instance de la classe. Inutile de dire que le résultat varie avec le changement de la valeur des paramètres
la source
La variable statique n'est pas liée à l'objet de la classe. Il est accessible en utilisant classname. Tous les objets de la classe partageront une variable statique.
En rendant la fonction statique, cela limitera l'accès de cette fonction dans ce fichier.
la source
Noyau du mot-clé statique que vous n'aurez qu'une copie en RAM de cette (méthode / variable / classe) partagée pour tous les appels
la source
Le mot clé static, lorsqu'il est appliqué à une classe, indique au compilateur de créer une seule instance de cette classe. Il n'est alors pas possible de «créer» une ou plusieurs instances de la classe. Toutes les méthodes d'une classe statique doivent elles-mêmes être déclarées statiques.
Il est possible, et souvent souhaitable, d'avoir des méthodes statiques d'une classe non statique. Par exemple, une méthode de fabrique lors de la création d'une instance d'une autre classe est souvent déclarée statique car cela signifie qu'une instance particulière de la classe contenant la méthode factor n'est pas requise.
Pour une bonne explication sur comment, quand et où voir MSDN
la source
static
classe n'a aucune instance du tout.