Contenu du cours
C# au-delà des Bases
C# au-delà des Bases
Constructeurs de Struct
Un constructeur est une méthode qui est automatiquement exécutée lorsqu'un nouvel objet est créé.
La syntaxe d'un constructeur est quelque peu similaire à celle d'une méthode, nous omettons simplement le returnType car un constructeur ne retourne aucune valeur:
index
struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
Les points suivants sont importants à noter concernant la syntaxe du constructeur:
- Le nom du constructeur est le même que le nom de la structure.
- Un constructeur n'a pas de valeur de retour.
Le programme suivant démontre comment le constructeur est appelé chaque fois qu'un objet est créé:
index
using System; struct Player { public Player() { Console.WriteLine($"New Player Object Created"); } } class Program { static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Ajoutons un champ à Player
appelé id
qui sera un identifiant unique de cet objet afin que chaque objet ait une valeur différente pour id
. Il commencera à 0
et s'incrémentera. Pour y parvenir, nous créerons une variable globale appelée totalPlayers
.
index
using System; class ConsoleApp { // We use the term 'static' when declaring variables directly under class // This will be explained in much more detail in later sections. public static int totalPlayers = 0; // This time we create put the struct inside the `ConsoleApp` class // This is to be able to use the `totalPlayers` variable easily. struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }
Dans le code ci-dessus, nous avons placé la structure à l'intérieur de la classe Program
pour pouvoir accéder à la variable 'totalPlayers' depuis l'intérieur du constructeur.
Nous pouvons passer des données dans un constructeur lors de la création d'un nouvel objet en utilisant la syntaxe suivante :
Voici un exemple pratique de l'utilisation :
index
using System; struct Coordinate3D { public double x; public double y; public double z; public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public void displayValue() { Console.WriteLine($"{this.x}, {this.y}, {this.z}"); } } class ConsoleApp { static void Main(string[] args) { Coordinate3D coord1 = new Coordinate3D(3, 5, 7); coord1.displayValue(); } }
Examinons le code étape par étape.
Tout d'abord, nous avons créé un constructeur et à l'intérieur du constructeur, nous avons assigné les valeurs passées x
, y
, z
aux champs x
, y
et z
:
index
public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
À l'intérieur de la méthode Main
, nous avons créé un nouvel objet Coordinate3D
et passé 3
, 5
et 7
comme x
, y
et z
via le constructeur.
index
Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Pour confirmer si les champs ont été correctement initialisés par le constructeur ou non, nous avons utilisé la méthode displayValue
:
index
coord1.displayValue();
La sortie a prouvé que les champs ont été mis à jour avec succès.
Les constructeurs sont très utiles lorsque nous voulons initier des objets avec certaines données ou pour effectuer certaines opérations initiales lors de la création d'un objet.
Merci pour vos commentaires !