Informazioni su questo:
So I think my understanding is correct that setting a private variable
is just a construct to be able to implement the get and set pattern?
Puoi pensare a una proprietà come a un metodo che può fare molto di più che esporre semplicemente il campo sottostante. Una proprietà può anche fornire l'accesso a più di un campo privato.
Ad esempio, potresti avere un Invoice
che avrebbe la proprietà TotalPrice
.
Questa proprietà restituirebbe quindi la somma di tutti i Item
(che sarebbe una proprietà List<Item>
sulla fattura) o qualcosa del genere.
In questo modo si incapsulano i meccanismi interni della fattura e si espone solo questa semplice proprietà. Nel metodo get
della proprietà, potresti avere varie chiamate ad altri metodi o proprietà per calcolare il prezzo.
Il Item
potrebbe avere campi privati per price
e quantity
e una proprietà Price
che avrebbe return (price * quantity)
. Potresti quindi aggiungere discount
al mix e l'accesso a Price
da qualunque cosa stia utilizzando Item
rimarrà lo stesso.
Inoltre, puoi rendere la proprietà in sola lettura (nessun metodo set
), in cui puoi quindi modificare i prezzi degli articoli, ma non il totale direttamente, applicando in tal modo che i dati sono coerenti.
Trovo più utile pensare alle proprietà come metodi, piuttosto che ai campi, e lavorare con le proprietà consente di cambiare il modo in cui i dati vengono restituiti senza modificare ogni chiamata a quella proprietà (perché è possibile elaborare il campo prima di tornare, piuttosto quindi a titolo definitivo assegnando il campo al cliente).