Aller au contenu principal
Publié le

struct en C#

Partager :

Introduction

Le langage C# est riche en types, offrant aux programmeurs une grande variété d'outils pour résoudre des problèmes. Parmi ces outils figurent les structures (structs), particulièrement utiles pour représenter des objets légers ayant une sémantique de valeur.

Qu'est-ce qu'une structure (struct) ?

En C#, une struct est un type valeur utilisé pour encapsuler de petites quantités de données liées. En raison de sa nature de type valeur, elle occupe directement un espace en mémoire, évitant l'allocation sur le tas (heap), ce qui la rend plus rapide dans certaines circonstances par rapport aux classes.

Structures vs Classes

Différences entre les structs et les classes :

  1. Type d'affectation : Alors qu'une struct est un type valeur, une classe est un type référence. Cette différence fondamentale détermine le comportement dans diverses opérations, notamment lors de l'affectation et du passage de paramètres.
  2. Héritage : Les structs ne prennent pas en charge l'héritage, à l'exception de l'héritage d'interfaces.
  3. Constructeurs : Une struct ne peut pas avoir de constructeur sans paramètres. En revanche, elle peut avoir des constructeurs paramétrés.
  4. Destructeurs : Les structs ne peuvent pas avoir de destructeurs. Les destructeurs sont utilisés dans les classes pour effectuer tout nettoyage nécessaire avant qu'un objet soit collecté par le ramasse-miettes.
  5. Modificateurs d'accès : Le modificateur protected n'a pas de sens dans une struct, car elles ne prennent pas en charge l'héritage.

Quand utiliser une struct ?

Les structs sont idéales dans les situations où :

  • L'instance est petite et possède une sémantique de valeur.
  • Il est souhaitable d'éviter les allocations sur le tas.
  • L'objet représente une seule valeur logique, comme un nombre ou un point de données.

Exemple Pratique

Voici un exemple d'une struct en action :

using System;

namespace Base {
  class Struct {
    public void Run() {
      var structure = new Structure();
      structure.Nombre = 200;

      // Le nombre doit être >= 0 et <= 100.
    }
  }

  struct Structure : INombre {
    private int nombre;

    public int Nombre {
      set {
        if (value >= 0 && value <= 100) {
          nombre = value;
          AfficherNombre();
        }
        else
          Console.WriteLine("Le nombre doit être >= 0 et <= 100.");
      }
    }

    public void AfficherNombre() {
      Console.WriteLine($"Nombre : {nombre}");
    }
  }

  interface INombre {
    void AfficherNombre();
  }
}

Conclusion

Le choix entre utiliser une struct ou une classe en C# dépend des besoins spécifiques de votre projet. Nous espérons qu'avec cet article vous avez acquis une compréhension claire des structures et de quand elles peuvent être utiles.

Happy coding!