Dans la programmation orientée objet en C#, les constructeurs et les destructeurs sont des méthodes spéciales qui sont automatiquement exécutées lorsqu'un objet est créé et détruit. Ils sont essentiels pour initialiser et nettoyer les ressources des objets.
Constructeurs
En C#, un constructeur est une méthode spéciale portant le même nom que la classe. Il est appelé automatiquement lors de la création d'un objet. Le constructeur n'a pas de type de retour, pas même void. Cela la distingue des autres méthodes. Le constructeur est utilisé pour initialiser les champs de données de l'objet et effectuer toute autre configuration nécessaire.
Dans cet exemple, la classe Game a un constructeur qui accepte un paramètre chaîne. Lorsqu'un objet Game est créé, le constructeur est appelé avec la valeur du nom du jeu.
Ici, "Super Mario" est passé au constructeur de la classe Game, et le champ nom de l'objet du jeu est initialisé à cette valeur.
Si nous ne définissons pas de constructeur pour une classe, le compilateur C# créera automatiquement un constructeur sans paramètre par défaut pour nous. Ce constructeur par défaut initialisera tous les champs d'objet à leurs valeurs par défaut.
Destructeurs
En C#, un destructeur est une méthode spéciale qui est appelée automatiquement lorsqu'un objet est détruit. Le destructeur porte le même nom que la classe, précédé d'un tilde (~). Le destructeur ne peut pas avoir de paramètres ni de types de retour.
Dans cet exemple, la classe Game a un destructeur. Le code à l'intérieur du destructeur sera exécuté lorsque l'objet Game sera détruit.
Les destructeurs sont utilisés pour libérer les ressources non gérées que l'objet a pu acquérir au cours de sa durée de vie. Les ressources non gérées sont des ressources que le garbage collector .NET ne peut pas nettoyer automatiquement, telles que les descripteurs de fichiers, les connexions à la base de données ou les tampons de mémoire non gérés.
En C#, nous n'avons pas besoin (et ne pouvons pas) appeler explicitement un destructeur. Le garbage collector .NET appelle automatiquement le destructeur lorsqu'il n'y a plus de références à l'objet. Cependant, nous ne pouvons pas prédire quand le garbage collector effectuera le garbage collection, nous ne pouvons donc pas prédire quand le destructeur sera appelé.
Si nous devons libérer immédiatement des ressources non gérées, nous pouvons implémenter la méthode Dispose de l'interface IDisposable. Nous pouvons appeler Dispose explicitement lorsque nous avons fini d’utiliser l’objet. Dans la méthode Dispose, nous devons libérer toutes les ressources non gérées et appeler GC.SuppressFinalize(this) pour indiquer au garbage collector qu'il n'a pas besoin d'appeler le destructeur.
En bref, les constructeurs et les destructeurs en C# sont des méthodes spéciales qui sont automatiquement appelées lorsqu'un objet est créé et détruit. Ils sont utilisés pour initialiser et nettoyer les ressources des objets. Bien que le garbage collector .NET gère pour nous la plupart des détails de gestion de la mémoire, nous devons toujours comprendre comment et quand utiliser les constructeurs et les destructeurs pour gérer efficacement les ressources.