Mot-clé statique C#
Mot clé statique C#
Dans ce didacticiel, nous allons découvrir le mot clé statique en C# à l'aide d'exemples.
En C#, si on utilise un static
mot-clé avec des membres de classe, alors il y aura une seule copie du type membre.
De plus, tous les objets de la classe partagent une seule copie au lieu de créer des copies individuelles.
Variables statiques C#
Si une variable est déclarée static
, nous pouvons accéder à la variable en utilisant le nom de la classe. Par exemple,
using System;
namespace StaticKeyword {
class Student {
// static variable
public static string department = "Computer Science";
}
class Program {
static void Main(string[] argos) {
// access static variable
Console.WriteLine("Department: " + Student.department);
Console.ReadLine();
}
}
}
Sortie
Department: Computer Science
Dans l'exemple ci-dessus, nous avons créé une variable statique nommée department . Comme la variable est statique, nous avons utilisé le nom de classe Student pour accéder à la variable.
Variables statiques et variables d'instance
En C#, chaque objet d'une classe aura sa propre copie de variables d'instance. Par exemple,
class Student {
// instance variable
public string studentName;
}
class Program {
static void Main(string[] args) {
Student s1 = new Student();
Student s2 = new Student();
}
}
Ici, les deux objets s1 et s2 aura des copies séparées de la variable studentName . Et, ils sont différents les uns des autres.
Cependant, si nous déclarons une variable statique, tous les objets de la classe partagent la même variable statique. Et, nous n'avons pas besoin de créer des objets de la classe pour accéder aux variables statiques.
Exemple :C# Variable statique Vs. Variable d'instance
using System;
namespace StaticKeyword {
class Student {
static public string schoolName = "Programiz School";
public string studentName;
}
class Program {
static void Main(string[] args) {
Student s1 = new Student();
s1.studentName = "Ram";
// calls instance variable
Console.WriteLine("Name: " + s1.studentName);
// calls static variable
Console.WriteLine("School: " + Student.schoolName);
Student s2 = new Student();
s2.studentName = "Shyam";
// calls instance variable
Console.WriteLine("Name: " + s2.studentName);
// calls static variable
Console.WriteLine("School: " + Student.schoolName);
Console.ReadLine();
}
}
}
Sortie
Name: Ram School: Programiz School Name: Shyam School: Programiz School
Dans le programme ci-dessus, la classe Student a une variable non statique nommée studentName et une variable statique nommée schoolName .
À l'intérieur du programme classe,
s1.studentName
/s2.studentName
- appelle la variable non statique à l'aide des objets s1 et s2 respectivementStudent.schoolName
- appelle la variable statique en utilisant le nom de la classe
Depuis le schoolName est le même pour tous les élèves, il est bon de faire le schoolName statique. Cela économise de la mémoire et rend le programme plus efficace.
Méthodes statiques C#
Tout comme les variables statiques, nous pouvons appeler les méthodes statiques en utilisant le nom de la classe.
class Test {
public static void display() {....}
}
class Program {
static void Main(string[] args) {
Test.display();
}
}
Ici, nous avons accédé à la méthode statique directement depuis Programme classes en utilisant le nom de la classe.
Lorsque nous déclarons une méthode statique, tous les objets de la classe partagent la même méthode statique.
Exemple :méthodes C# statiques et non statiques
using System;
namespace StaticKeyword {
class Test {
public void display1() {
Console.WriteLine("Non static method");
}
public static void display2() {
Console.WriteLine("Static method");
}
}
class Program {
static void Main(string[] args) {
Test t1 = new Test();
t1.display1();
Test.display2();
Console.ReadLine();
}
}
}
Sortie
Non static method Static method
Dans le programme ci-dessus, nous avons déclaré une méthode non statique nommée display1() et une méthode statique nommée display2() à l'intérieur de la classe Test .
Dans la classe Program,
t1.display1()
- accéder à la méthode non statique en utilisant s1 objetTest.display2()
- accéder à la méthode statique en utilisant le nom de classe Test
Remarque :En C#, le Main méthode est statique. Ainsi, nous pouvons l'appeler sans créer l'objet.
Classe statique C#
En C #, lorsque nous déclarons une classe comme statique, nous ne pouvons pas créer d'objets de la classe. Par exemple,
using System;
namespace StaticKeyword {
static class Test {
static int a = 5;
static void display() {
Console.WriteLine("Static method");
}
static void Main(string[] args) {
// creating object of Test
Test t1 = new Test();
Console.WriteLine(a);
display();
}
}
}
Dans l'exemple ci-dessus, nous avons une classe statique Test . Nous avons créé un objet t1 de la classe Test .
Comme nous ne pouvons pas créer un objet de la classe statique, nous obtenons l'erreur suivante :
error CS0723: Cannot declare a variable of static type 'Test'
error CS0712: Cannot create an instance of the static class
Notez que le champ et la méthode de la classe statique sont également statiques car nous ne pouvons avoir que des membres statiques à l'intérieur de la classe statique.
Remarque :Nous ne pouvons pas hériter d'une classe statique en C#. Par exemple,
static class A {
...
}
// Error Code
class B : A {
...
}
Accéder aux membres statiques du cours
Si nous accédons aux variables statiques et aux méthodes à l'intérieur de la même classe, nous pouvons y accéder directement sans utiliser le nom de la classe. Par exemple,
using System;
namespace StaticKeyword {
class Test {
static int age = 25;
public static void display() {
Console.WriteLine("Static method");
}
static void Main(string[] args) {
Console.WriteLine(age);
display();
Console.ReadLine();
}
}
}
Sortie
25 Static method
Ici, nous accédons au champ statique age et méthode statique display()
sans utiliser le nom de la classe.
Langue C