Que signifie l'ajout du mot clé static à une méthode ?
public static void doSomething(){
//Well, do something!
}
Pouvez-vous ajouter le static
mot-clé en classe ? Que signifierait-il alors ?
Que signifie l'ajout du mot clé static à une méthode ?
public static void doSomething(){
//Well, do something!
}
Pouvez-vous ajouter le static
mot-clé en classe ? Que signifierait-il alors ?
A static
contrairement à une fonction ordinaire ( instance ), n'est pas associée à une instance de la classe.
A static
est une classe qui ne peut contenir que static
et ne peuvent donc pas être instanciés.
Par exemple :
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Afin d'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
@Moshe : Exactement. Avec une méthode statique, vous n'avez pas besoin d'une instance de la classe pour appeler la méthode, seulement de la classe.
Mais existe-t-il réellement une sorte de limitation technique qui empêche d'appeler une méthode statique sur une instance ? Si le compilateur l'autorise, quel est le danger qu'elle soit accessible ?
D'un autre point de vue : Considérons que vous voulez faire quelques changements 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 aucun sens à créer une instance de la classe "Tools" parce qu'il n'y a aucun type d'entité disponible dans cette classe (comparé à la classe "Person" ou "Teacher"). Donc nous utilisons le mot-clé static afin d'utiliser la classe "Tools" sans créer d'instance de celle-ci, 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 souhaitez.
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 si 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. Il n'existe qu'une seule copie des champs et événements statiques, et les méthodes et propriétés statiques ne peuvent accéder qu'aux champs et événements statiques. Les membres statiques sont souvent utilisés pour représenter des données ou des calculs qui ne changent pas en fonction de 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 d'une classe sont déclarés à l'aide du mot clé static avant le type de retour du membre.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
12 votes
Vous pouvez utiliser une méthode statique sans créer une instance de cette classe, simplement en utilisant class_name.static_method_name() ;
0 votes
Au niveau de la programmation, nous avons l'impression de pouvoir appeler une méthode statique sans créer une instance d'une classe/type. En interne, c'est pas l'affaire. Le CLR gère en interne une instance spéciale appelée exemple de type pour gérer les appels aux méthodes statiques. Veuillez consulter este réponse. C'est tellement intriguant.