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
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!