Constructeurs de Struct
Un constructeur est une méthode qui s'exécute automatiquement lors de la création d'un nouvel objet.
La syntaxe d'un constructeur est similaire à celle d'une méthode, il suffit d'omettre le returnType car un constructeur ne retourne aucune valeur :
index.cs
1234567891011struct 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 identique au nom de la structure ;
- Un constructeur ne possède aucune valeur de retour.
Le programme suivant montre comment le constructeur est appelé à chaque création d'un objet :
index.cs
12345678910111213141516171819using 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(); } }
Si vous utilisez une version de C# antérieure à C# 10
, vous pourriez rencontrer une erreur à la compilation. Il est recommandé d'utiliser C# 10
ou une version ultérieure. Si vous ne souhaitez pas passer à une version plus récente, il est important de noter que l'utilisation des constructeurs sera plus limitée. Par exemple, il n'est pas possible de créer un constructeur sans paramètre dans les versions plus anciennes.
Ajout d'un champ à Player
nommé id
, servant d'identifiant unique pour chaque objet afin que chaque instance possède une valeur différente pour id
. La valeur commencera à 0
et s'incrémentera. Pour cela, il est nécessaire de créer une variable globale nommée totalPlayers
.
index.cs
12345678910111213141516171819202122232425262728using 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, la structure a été placée à l'intérieur de la classe Program
afin de pouvoir accéder à la variable 'totalPlayers' depuis le constructeur.
Il est possible de transmettre des données à un constructeur lors de la création d'un nouvel objet en utilisant la syntaxe suivante :
structureName variableName = new structureName(argument1, argument2, …);
Voici un exemple pratique d'utilisation :
index.cs
1234567891011121314151617181920212223242526272829using 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, un constructeur a été créé et, à l'intérieur de celui-ci, les valeurs passées x
, y
, z
ont été assignées aux champs x
, y
et z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Dans la méthode Main
, un nouvel objet Coordinate3D
a été créé et les valeurs 3
, 5
et 7
ont été transmises en tant que x
, y
et z
via le constructeur.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Pour vérifier si les champs ont bien été initialisés par le constructeur ou non, la méthode displayValue
a été utilisée :
index.cs
1coord1.displayValue();
La sortie a prouvé que les champs ont été mis à jour avec succès.
Les constructeurs sont très utiles lorsque vous souhaitez initialiser des objets avec certaines données ou effectuer des opérations initiales lors de la création d'un objet.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you explain more about how constructors work in different programming languages?
What happens if I don't define a constructor in my structure or class?
Can you show an example of using multiple constructors with different parameters?
Awesome!
Completion rate improved to 2.04
Constructeurs de Struct
Glissez pour afficher le menu
Un constructeur est une méthode qui s'exécute automatiquement lors de la création d'un nouvel objet.
La syntaxe d'un constructeur est similaire à celle d'une méthode, il suffit d'omettre le returnType car un constructeur ne retourne aucune valeur :
index.cs
1234567891011struct 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 identique au nom de la structure ;
- Un constructeur ne possède aucune valeur de retour.
Le programme suivant montre comment le constructeur est appelé à chaque création d'un objet :
index.cs
12345678910111213141516171819using 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(); } }
Si vous utilisez une version de C# antérieure à C# 10
, vous pourriez rencontrer une erreur à la compilation. Il est recommandé d'utiliser C# 10
ou une version ultérieure. Si vous ne souhaitez pas passer à une version plus récente, il est important de noter que l'utilisation des constructeurs sera plus limitée. Par exemple, il n'est pas possible de créer un constructeur sans paramètre dans les versions plus anciennes.
Ajout d'un champ à Player
nommé id
, servant d'identifiant unique pour chaque objet afin que chaque instance possède une valeur différente pour id
. La valeur commencera à 0
et s'incrémentera. Pour cela, il est nécessaire de créer une variable globale nommée totalPlayers
.
index.cs
12345678910111213141516171819202122232425262728using 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, la structure a été placée à l'intérieur de la classe Program
afin de pouvoir accéder à la variable 'totalPlayers' depuis le constructeur.
Il est possible de transmettre des données à un constructeur lors de la création d'un nouvel objet en utilisant la syntaxe suivante :
structureName variableName = new structureName(argument1, argument2, …);
Voici un exemple pratique d'utilisation :
index.cs
1234567891011121314151617181920212223242526272829using 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, un constructeur a été créé et, à l'intérieur de celui-ci, les valeurs passées x
, y
, z
ont été assignées aux champs x
, y
et z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
Dans la méthode Main
, un nouvel objet Coordinate3D
a été créé et les valeurs 3
, 5
et 7
ont été transmises en tant que x
, y
et z
via le constructeur.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Pour vérifier si les champs ont bien été initialisés par le constructeur ou non, la méthode displayValue
a été utilisée :
index.cs
1coord1.displayValue();
La sortie a prouvé que les champs ont été mis à jour avec succès.
Les constructeurs sont très utiles lorsque vous souhaitez initialiser des objets avec certaines données ou effectuer des opérations initiales lors de la création d'un objet.
Merci pour vos commentaires !