aggiungo una cosa che mi è venuta in mente solo ora (non mi è possibile editare il primo post
)
"costruttori"
dunque, da quel poco che mi è stato spiegato, un costruttore alloca in memoria lo spazio per contenere l'oggetto e i dati dei suoi attributi.
ovvero:
codice:
class MyClass
{
private int id;
public string nome;
public MyClass()
{
// costruttore
}
}
Ora, sempre se le mie info sono corrette, quando farò una "new" su MyClass verrà lanciato il costruttore, e verranno create in memoria una variabile di tipo "int" chiamata "id" e una variabile di tipo stringa chiamata "nome".
Dico bene no?
bene, il mio dubbio sorge con attributi della classe che sono "List"
codice:
class MyClass
{
private int id;
public string nome;
public List<AltraClasse> listaAltraClasse;
public MyClass()
{
// costruttore
}
}
e da quel che mi è stato insegnato il passo successivo per creare effettivamente la lista è:
List<AltraClasse> listaAltraClasse = new list<AltraClasse>(numero_di_elementi)
corretto?
ora quel che vorrei capire è se questo comando lo devo effettivamente scrivere dentro il codice del costruttore, o se è fatto automaticamente!?!?
a) se è fatto automaticamente come potrei io esplicitare quanto lo voglio grande?
b) se NON è fatto esplicitamente, perchè per questo attributo ho dovuto fare la new mentre per gli altri 2 no?
poi una piccola curiosità sulle "List"
quando esplicito (numero_di_elementi) esplicito le "caselle di memoria" dentro le quali VERRANNO (futuro) inseriti dei dati, nella fattispecie degli oggetti di tipo "AltraClasse"
quando faccio
oggettolista.ADD(qualcosa) in pratica il metodo controlla se ci sono spazi liberi, se ci sono inserisce "qualcosa" nello spazio libero, altrimenti CREA un altro spazio e ci mette dentro "qualcosa"?
Ma se è così, che senso ha specificare a priori la dimensione? tanto vale creare sempre "List" di dimensioni 0, e poi man mano che aggiungo gli elementi creo "le caselle" dove metterli, no?
Anche xkè, lista.count dovrebbe restituire il numero di ELEMENTI al suo interno, non il numero di "caselle", dico bene?
Mi rendo conto di avere abbastanza confusione su questi argomenti ma a mia discolpa potrei dire che non è tutta una carenza mia :P
Grazie a chi mi vorrà aiutare ^_^