Différence entre Struct et Class en C#

Muhammad Maisam Abbas 16 février 2024
  1. Structure en C#
  2. Classe en C#
  3. Différence entre structure et classe en C#
Différence entre Struct et Class en C#

Dans ce didacticiel, nous discuterons des différences et des similitudes entre les structures et les classes en C#.

Structure en C#

Le mot clé struct définit une structure en C#. Semblable à une classe, une structure peut contenir des variables, des propriétés et des fonctions. Nous pouvons définir des constructeurs pour les structures en C#. Mais nous ne pouvons pas définir de constructeurs par défaut pour les structures en C#. Nous ne pouvons pas définir de destructeurs pour les structures en C#. Les structures peuvent également implémenter des interfaces en C#. La principale différence entre les structures et les classes est que nous ne pouvons pas utiliser une structure comme base d’autres structures ou classes pour l’héritage. L’exemple de code suivant nous montre comment définir une structure simple à l’aide du mot-clé struct en C#.

struct MyStructure {
  public int x;
};

Dans le code ci-dessus, nous définissons une structure avec le mot-clé struct en C#. Les structures peuvent être utilisées en créant une instance. Le code pour créer une instance d’une structure est donné ci-dessous.

MyStructure S = new MyStructure();

Dans le code ci-dessus, nous avons créé une instance de la structure MyStructure avec le mot-clé new en C#.

Classe en C#

Le mot clé class définit une classe en C#. Semblable à une structure, une classe peut avoir des variables, des propriétés et des fonctions en C#. Nous pouvons également définir des constructeurs et des destructeurs par défaut pour les classes en C#. Une caractéristique clé des classes est l’héritage. Ainsi, une classe peut être utilisée comme base d’autres classes pour l’héritage. Une autre caractéristique unique des classes est le polymorphisme. L’exemple de code suivant nous montre comment définir une classe simple à l’aide du mot clé class en C#.

class MyClass {
  int x;
  public MyClass(int a) {
    this.x = a;
  }
  public void setx(int a) {
    this.x = a;
  }
  public void show() {
    Console.WriteLine("The value of x = {0}", x);
  }
}

Dans le code ci-dessus, nous définissons une classe avec le mot-clé class en C#. Les classes peuvent être utilisées en créant une instance. Le code pour créer une instance d’une classe est donné ci-dessous.

MyClass C = new MyClass(100);

Dans le code ci-dessus, nous avons créé une instance de la classe MyClass avec le mot-clé new en C#.

Différence entre structure et classe en C#

Les structures sont des variables de type valeur et vivent dans la pile. Les classes sont des variables de type référence et vivent dans le tas en référence à ce tas à l’intérieur de la pile.

Les structures ne peuvent pas avoir de valeurs nulles, alors que les classes peuvent avoir des valeurs nulles. Cela signifie qu’une variable de type valeur doit avoir une valeur, alors qu’une variable de type référence peut ou non pointer vers une adresse mémoire. La différence entre les structures et les classes en C# est illustrée dans l’exemple de codage ci-dessous.

MyStructure S = new MyStructure();
MyStructure S2 = S;

S.x = 100;
S2.x = 200;

Console.WriteLine("Structure 1 = {0}", S.x);
Console.WriteLine("Structure 2 = {0}", S2.x);

Production:

Structure 1 = 100 Structure 2 = 200

Nous avons d’abord créé une instance S de la structure MyStructure puis créé une autre copie de la même instance - S2. Après cela, nous avons initialisé les valeurs dans les deux instances.

Dans la sortie, nous obtenons deux valeurs différentes pour deux copies différentes de l’instance. Cela signifie qu’il existe deux copies distinctes de la structure MyStructure à l’intérieur de la pile. La copie d’une variable de type valeur dans une autre variable crée une copie séparée de tout le contenu de la variable de type valeur.

Dans l’exemple de code suivant, nous ferons la même chose avec la classe MyClass.

MyClass C = new MyClass(100);
MyClass newC = C;

newC.setx(100);
newC.setx(200);

C.show();
newC.show();

Production:

The value of x = 200 The value of x = 200

Nous avons d’abord créé une instance C de la classe MyClass puis copié cette instance dans une autre instance, newC, de la classe MyClass. Après cela, nous définissons la valeur de la variable x dans les deux instances avec la fonction setx().

Dans la sortie, nous obtenons les mêmes valeurs de la variable x dans les deux instances. Cela signifie que les instances C et newC pointent vers le même emplacement mémoire à l’intérieur du tas. Il copie uniquement la référence de la variable de type référence lors de la copie d’une variable de type référence dans une autre variable.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp Class