Costruttori di Struct
Un costruttore è un metodo che viene eseguito automaticamente quando viene creato un nuovo oggetto.
La sintassi di un costruttore è simile a quella di un metodo, ma si omette il returnType poiché un costruttore non restituisce alcun valore:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
I seguenti punti sono importanti da ricordare riguardo la sintassi del costruttore:
- Il nome del costruttore è uguale al nome della struttura;
- Un costruttore non ha alcun valore di ritorno.
Il seguente programma dimostra come il costruttore venga chiamato ogni volta che viene creato un oggetto:
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(); } }
Se si utilizza una versione di C# precedente a C# 10
, potrebbe verificarsi un errore in fase di compilazione. Si consiglia di utilizzare C# 10
o una versione successiva. Se non si desidera passare a una versione più recente, è importante notare che l'utilizzo dei costruttori sarà più limitato. Ad esempio, non è possibile creare un costruttore senza parametri nelle versioni precedenti.
Aggiungere un campo a Player
chiamato id
, che sarà un identificatore univoco per quell'oggetto, in modo che ogni oggetto abbia un valore diverso per id
. Partirà da 0
e verrà incrementato. Per ottenere questo risultato, è necessario creare una variabile globale chiamata 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(); } }
Nel codice sopra, la struct è stata inserita all'interno della classe Program
per poter accedere alla variabile 'totalPlayers' dal costruttore.
È possibile passare dati a un costruttore durante la creazione di un nuovo oggetto utilizzando la seguente sintassi:
structureName variableName = new structureName(argument1, argument2, …);
Segue un esempio pratico di utilizzo:
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(); } }
Analizziamo il codice passo dopo passo.
Per prima cosa, è stato creato un costruttore e all'interno del costruttore sono stati assegnati i valori passati x
, y
, z
ai campi x
, y
e z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
All'interno del metodo Main
, è stato creato un nuovo oggetto Coordinate3D
e sono stati passati 3
, 5
e 7
come x
, y
e z
tramite il costruttore.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Per verificare se i campi sono stati inizializzati correttamente dal costruttore, è stato utilizzato il metodo displayValue
:
index.cs
1coord1.displayValue();
L'output ha dimostrato che i campi sono stati aggiornati con successo.
I costruttori sono molto utili quando si desidera inizializzare oggetti con alcuni dati o per eseguire alcune operazioni iniziali quando un oggetto viene creato.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Costruttori di Struct
Scorri per mostrare il menu
Un costruttore è un metodo che viene eseguito automaticamente quando viene creato un nuovo oggetto.
La sintassi di un costruttore è simile a quella di un metodo, ma si omette il returnType poiché un costruttore non restituisce alcun valore:
index.cs
1234567891011struct structureName { // ... fields (optional) public structureName(parameter1, parameter2, ...) { // code } // ... methods (optional) }
I seguenti punti sono importanti da ricordare riguardo la sintassi del costruttore:
- Il nome del costruttore è uguale al nome della struttura;
- Un costruttore non ha alcun valore di ritorno.
Il seguente programma dimostra come il costruttore venga chiamato ogni volta che viene creato un oggetto:
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(); } }
Se si utilizza una versione di C# precedente a C# 10
, potrebbe verificarsi un errore in fase di compilazione. Si consiglia di utilizzare C# 10
o una versione successiva. Se non si desidera passare a una versione più recente, è importante notare che l'utilizzo dei costruttori sarà più limitato. Ad esempio, non è possibile creare un costruttore senza parametri nelle versioni precedenti.
Aggiungere un campo a Player
chiamato id
, che sarà un identificatore univoco per quell'oggetto, in modo che ogni oggetto abbia un valore diverso per id
. Partirà da 0
e verrà incrementato. Per ottenere questo risultato, è necessario creare una variabile globale chiamata 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(); } }
Nel codice sopra, la struct è stata inserita all'interno della classe Program
per poter accedere alla variabile 'totalPlayers' dal costruttore.
È possibile passare dati a un costruttore durante la creazione di un nuovo oggetto utilizzando la seguente sintassi:
structureName variableName = new structureName(argument1, argument2, …);
Segue un esempio pratico di utilizzo:
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(); } }
Analizziamo il codice passo dopo passo.
Per prima cosa, è stato creato un costruttore e all'interno del costruttore sono stati assegnati i valori passati x
, y
, z
ai campi x
, y
e z
:
index.cs
123456public Coordinate3D(double x, double y, double z) { this.x = x; this.y = y; this.z = z; }
All'interno del metodo Main
, è stato creato un nuovo oggetto Coordinate3D
e sono stati passati 3
, 5
e 7
come x
, y
e z
tramite il costruttore.
index.cs
1Coordinate3D coord1 = new Coordinate3D(3, 5, 7);
Per verificare se i campi sono stati inizializzati correttamente dal costruttore, è stato utilizzato il metodo displayValue
:
index.cs
1coord1.displayValue();
L'output ha dimostrato che i campi sono stati aggiornati con successo.
I costruttori sono molto utili quando si desidera inizializzare oggetti con alcuni dati o per eseguire alcune operazioni iniziali quando un oggetto viene creato.
Grazie per i tuoi commenti!