PDA

View Full Version : [C#] Assegnazione Array di Oggetti


MarcoLRM
30-10-2022, 10:28
Ciao a tutti.

Sto studiando C#. Solo per curiosità, mi sono imbattuto in un esercizio, se volessi creare un Array (non ArrayList, non List, ecc...) di Oggetti, e crearlo con le property, dovrei fare una cosa del genere?


class Persona{
public string Nome {get;set;}
public string Cognome {get;set;}
}
....
....
Persona[] persone;
...
...
persone = new Persona[2] {
new Persona() { Nome = "Nome_1", Cognome = "Cognome_1" } ,
new Persona() { Nome = "Nome_2", Cognome = "Cognome_2" }
};


Funziona, ma è quel persone = new Persona[2]
pensavo che si potesse inizializzare anche con

persone = {
new Persona() { Nome = "Nome_1", Cognome = "Cognome_1" } ,
new Persona() { Nome = "Nome_2", Cognome = "Cognome_2" }
};


Ma non mi funziona in questo modo.

Ci sono altri modi più "leggibili" ?

Grazie,
Marco

tagan
30-10-2022, 10:44
perché non ti funziona?
Comunque, la sintassi può essere

Persona[] persone = new Persona[2] {
new Persona() { Nome = "Nome_1", Cognome = "Cognome_1" } ,
new Persona() { Nome = "Nome_2", Cognome = "Cognome_2" }
};

oppure

Persona[] persone = {
new Persona() { Nome = "Nome_1", Cognome = "Cognome_1" } ,
new Persona() { Nome = "Nome_2", Cognome = "Cognome_2" }
}; // automaticamente viene assegnata la dimensione

oppure

Persona[] persone = new Persona[2];
persone[0] = new Persona() { Nome = "Nome_1", Cognome = "Cognome_1" };
persone[1] = new Persona() { Nome = "Nome_2", Cognome = "Cognome_2" };


non è possibile però dichiarare un array e assegnarlo in un secondo momento senza il new,

cioè


Persona[] p;

e dopo :
p = { ecc.ecc. } // non si piò fare

in questo caso, devi fare
p = new Persona[2] { ecc.ecc.}

antonio338
10-12-2022, 17:44
Il modo più conciso possibile che conosca è

Persona[] p = new [] { new Persona(), new Persona() };

Qui puoi trovare la documentazione (https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays/implicitly-typed-arrays)