Link copiato negli appunti
Per scegliere quando è opportuno utilizzare una proprietà al posto di un metodo o viceversa si deve considerare che i metodi rappresentano delle azioni mentre le proprietà rappresentano dei valori o degli attributi. Le proprietà non dovrebbero quindi essere complesse nella loro implementazione e non dovrebbero modificare dei dati ma solo restituire valori.
L'utilizzo classico di una proprietà è quello di permettere la modifica del valore di un campo privato e la verifica preventiva del valore assegnato:
private string _name = ""; public string Name { get { return _name; } set { if( value != null && value.Length <= 100) { _name = value; } else { throw new ApplicationException("Max length for Name is 100 characters"); } } }
àˆ opportuno utilizzare un metodo al posto di una proprietà se si verifica uno dei seguenti casi:
- Quando il dato da fornire implica l'accesso a canali di comunicazione lenti quali la rete o il file system
- Quando il valore è il risultato di una conversione di altri valori (ad esempio come nel caso del metodo ToString() della classe Object
- Quando il valore restituito è diverso ad ogni chiamata (ad esempio come nel caso del metodo NewGuid della classe Guid)
- Quando la modifica del valore ha effetti significativi su altri dati dell'applicazione
- Quando l'operazione restituisce una copia di un oggetto interno invece dell'oggetto stesso
- Quando il valore è una matrice