PDA

Visualizza la versione completa : Proprietà in c#


cobain81
29-07-2003, 22:44
Ritengo che le proprietà siano una delle innovazioni più interessanti portate dal c#.
Mi sono accorto però, di abusarne troppo. Mi spiego:

potrei scrivere indifferentemente

public ArrayList getArray()
{
ArrayList arrayList = new ArrayList();
// riempio l'array
return arrayList;
}

oppure

public ArrayList ArrayList
{
get
{
ArrayList arrayList = new ArrayList();
// riempio l'array
return arrayList;
}
}

Sapete dirmi quale dei due modi è più indicato? Ci sono diversità dal punto di vista delle prestazioni / possibilità? Oppure si tratta solo di un formalismo e ognuno sceglie il modo che preferisce?

Grazie

biste
30-07-2003, 23:20
Non c'è una regola generale, va molto in base alle esigenze... Certo che se hai una ad esempio una classe persona solitamente si fa una property Cognome e non un metodo GetCognome.

Degli esempi che hai fatto tu è semanticamente più corretto il primo anche se in entrambi non salvi un riferimento interno alla classe rispetto all'oggetto creato.

Di solito quando si fa una property si crea in questo modo:



internal ArrayList _ArrayList //Variabile di membro

public ArrayList ArrayList{
get{
if (_ArrayList == null) //Se non ho ancora creato l'oggetto
// riempio l'array
CreateArray();
return _ArrayList;
}
}

private void CreateArray(){
_ArrayList = new ArrayList();
//Valorizzo l'array
}


In questo caso abbiamo una variabile di membro _ArrayList che utilizziamo per accedere all'oggetto dalla classe stessa e eventualmente dalle classi figlio (visto che ha uno scope internal) senza passare per la get della property.
Poi controlliamo semplicemente che l'array non sia già stato creato: se è già creato restituiamo l'istanza corrente, altrimenti chiamiamo un metodo che ci crea l'istanza e ce lo valorizza.
Come regola generale è importante notare che per creare l'array ci siamo affidati ad un metodo esterno perchè solitamente operazioni/controlli non vengono fatti nel corpo della property ma ci si affida appunto a metodi per maggiore leggibilità del codice.

Spero sia + o - chiaro e di non averti confuso ulteriormente le idee, cmq credimi che poi lavorandoci capisci molto di più rispetto alla teoria letta sui manuali ;)

HTH

Loading