Qu'est-ce que cela signifie lorsque vous ajoutez le mot-clé static à une méthode?
public static void doSomething(){
//Well, do something!
}
Pouvez-vous ajouter le static
mot - clé à la classe? Que signifierait-il alors?
Qu'est-ce que cela signifie lorsque vous ajoutez le mot-clé static à une méthode?
public static void doSomething(){
//Well, do something!
}
Pouvez-vous ajouter le static
mot - clé à la classe? Que signifierait-il alors?
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 des static
membres et ne peut donc pas être instanciée.
Par exemple:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Pour appeler InstanceMethod
, vous avez besoin d'une instance de la classe:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
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
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
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.
En peu de temps, vous ne pouvez pas instancier la classe statique: Ex:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Vous ne pouvez pas faire comme ça:
myStaticClass msc = new myStaticClass(); // it will cause an error
Vous ne pouvez faire que:
myStaticClass.someFunction();
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
static
classe n'a aucune instance du tout.