La domanda non è veramente su protected
ha più con: perché dovrei usare le proprietà?
Propeties sono logicamente equivalenti con Getter metodo coppie/Setter, qualunque cosa si può fare con un con un Name {get{} \ set{}}
si può fare con un GetName() \ SetName()
coppia e viceversa, tanto più che C# ha getter e setter di accesso, in modo che possiamo giocare con il accessibilità anche.
Tuttavia, ci sono alcune persone che ritengono che le proprietà pubbliche (o protette) sono un po 'come barare da una prospettiva OOP, specialmente se tutto ciò che la proprietà fa è solo esporre un campo di supporto. Dopotutto lo person.Name = "SWeko"
sembra che cambi lo stato dell'oggetto esternamente, mentre person.SetName("SWeko")
dice semplicemente all'oggetto che ha bisogno di cambiare il suo stato. E da un punto di vista puramente teorico penso che quelle obiezioni abbiano un merito.
Tuttavia, non tutti noi abbiamo il lusso di vivere in torri d'avorio, quindi il concetto di proprietà è davvero utile, in quanto è più leggibile, meno soggetto a errori, e IMHO, più vicino al modello del mondo reale. Essa ci fornisce anche una sorta di dicotomia, quando scrivo qualcosa di simile:
person.Name = "SWeko";
person.Work();
mi aspetto che la prima linea sarà un compito veloce, e non avrà effetti collaterali, mentre mi aspetto che la seconda linea farà qualcosa di più e probabilmente influenzerà lo stato interiore dell'oggetto.Quando utilizzo il metodo Getter e Setter, nessuna distorsione del genere è immediatamente evidente:
person.SetName("SWeko");
person.Work();
Il secondo è perfettamente valido Java; quindi se vedi un codice C# così, la ragione più probabile è che sia stato scritto da un programmatore Java che non ha ancora adattato a C# ancora. –
Si utilizza 'protected' per l'accessibilità, non ha nulla con le proprietà. – leppie