Pytanie nie jest tak naprawdę o protected
ma więcej z: dlaczego powinienem używać właściwości?
Propeties są logicznie równoważne z getter/setter parami metody, co można zrobić z ze Name {get{} \ set{}}
można zrobić z GetName() \ SetName()
pary i odwrotnie, zwłaszcza w C# ma getter i setter akcesorów, dzięki czemu możemy grać z także dostępność.
Są jednak osoby, które uważają, że publiczne (lub chronione) właściwości są trochę jak oszustwa z perspektywy OOP, szczególnie, jeśli wszystko, co robi własność, po prostu pokazuje pole wsparcia. Mimo wszystko wydaje się, że zmienia on stan obiektu na zewnątrz, podczas gdy person.SetName("SWeko")
jedynie informuje obiekt, że potrzebuje zmienić jego stan. I z czysto teoretycznego punktu widzenia uważam, że te obiekcje mają wartość.
Jednak nie wszyscy mamy luksus życia w wieżach z kości słoniowej, więc pojęcie własności jest naprawdę użyteczne, ponieważ jest bardziej czytelne, mniej podatne na błędy, a IMHO, bliżej modelu realnego świata. Dostarcza nam również pewnego rodzaju dychotomii, gdy piszę coś takiego:
person.Name = "SWeko";
person.Work();
Spodziewam się, że pierwsza linia będzie szybki przydział, a nie mają skutków ubocznych, a spodziewam się, że druga linia zrobi coś więcej i prawdopodobnie wpłynie na stan wewnętrzny obiektu.Kiedy używam metody Gettera i Settera, żadna taka uwaga nie jest od razu oczywista:
person.SetName("SWeko");
person.Work();
Druga to doskonale poprawna Java; więc jeśli widzisz taki kod C#, najbardziej prawdopodobnym powodem jest to, że został napisany przez programistę Java, który jeszcze nie przystosował się do C#. –
Używasz 'protected' dla dostępności, nie ma nic wspólnego z właściwościami. – leppie