La pregunta no es realmente acerca de protected
tiene más con: ¿por qué debería usar propiedades?
Propeties son lógicamente equivalentes con Getter pares de método/organismo, lo que puede hacer con un con un Name {get{} \ set{}}
que puede hacer con un GetName() \ SetName()
par y viceversa, especialmente en lo que C# tiene get y set descriptores de acceso, por lo que pueden jugar con el accesibilidad también
Pero, hay algunas personas que sienten que las propiedades públicas (o protegidas) son un poco como copiar desde una perspectiva OOP, especialmente si todo lo que hace la propiedad es simplemente exponer un campo de respaldo. Después de todo, person.Name = "SWeko"
parece que cambia el estado del objeto externamente, mientras que person.SetName("SWeko")
simplemente le dice al objeto que necesita cambiar su estado. Y desde un punto de vista puramente teórico, creo que esas objeciones tienen sus méritos.
Sin embargo, no todos tenemos el lujo de vivir en torres de marfil, por lo que el concepto de propiedades es realmente útil, ya que es más legible, menos propenso a errores y en mi humilde opinión, más cercano al modelo real. También nos proporciona una especie de dicotomía, cuando escribo algo como esto:
person.Name = "SWeko";
person.Work();
espero que la primera línea será una tarea rápida, y no tienen efectos secundarios, mientras espero que la segunda línea hará algo más, y probablemente afecte el estado interno del objeto.Cuando uso el método Getter y Setter, ninguna distiction es inmediatamente obvia:
person.SetName("SWeko");
person.Work();
La segunda es Java perfectamente válida; así que si ve un código C# así, la razón más probable es que haya sido escrito por un programador Java que aún no se ha adaptado a C#. –
Usted usa 'protected' para accesibilidad, no tiene nada que ver con las propiedades. – leppie