¿Cuándo debemos usar las propiedades get y set en C#?Cuándo usar las propiedades get y set en C#
Respuesta
Según la Property Usage Guidelines en MSDN:
utilizar una propiedad cuando el miembro es un miembro de datos lógica. En las siguientes declaraciones de miembros, Name es una propiedad porque es un miembro lógico de la clase.
Uso un método cuando:
- La operación es una conversión, como
Object.ToString
.- La operación es lo suficientemente costosa como para que desee comunicarle al usuario que debe considerar almacenar en caché el resultado.
- La obtención de un valor de propiedad con el acceso de get tendría un efecto secundario observable.
- Llamar al miembro dos veces seguidas produce resultados diferentes.
- El orden de ejecución es importante. Tenga en cuenta que las propiedades de un tipo se deben poder establecer y recuperar en cualquier orden.
- El miembro es estático pero devuelve un valor que se puede cambiar.
- El miembro devuelve una matriz. Las propiedades que devuelven matrices pueden ser muy engañosas. Por lo general, es necesario devolver una copia de la matriz interna para que el usuario no pueda cambiar el estado interno.Esto, junto con el hecho de que un usuario puede asumir fácilmente que es una propiedad indexada, conduce a un código ineficiente. En el siguiente ejemplo de código, cada llamada a la propiedad Methods crea una copia de la matriz. Como resultado, 2n + 1 copias de la matriz se crearán en el siguiente ciclo.
Entiendo las propiedades pero no esta respuesta ... Encontré el [Jon Skeet] (http://csharpindepth.com/Articles/Chapter8/PropertiesMatter.aspx) referido en la respuesta de Cody mucho más legible. – KMC
@KMC Estoy de acuerdo, el Sr. Skeet es un maestro/comunicador mucho mejor que su página promedio de MSDN. –
Properties son probablemente lo que estás buscando si decides que necesitas obtener y configurar los métodos. Para una discusión decente sobre por qué lo harías y por qué no quieres utilizar las propiedades, echa un vistazo a Jon Skeet's Why Properties Matter.
Una buena razón para usar propiedades en lugar de simplemente exponer los datos internos de la clase es, obviamente, para proteger esa información. Puede controlar el acceso para atributos individuales así como validar datos que se están configurando. También puede implementar propiedades calculadas para calcular valores, esto no aparecerá diferente de cualquier otro atributo para un usuario de su clase.
+1. Preciso al punto. – Pradeep
Las propiedades son lo que significa OP. –
Tenga en cuenta que no puede realizar propiedades que toman parámetros, por lo que puede ser un caso en el que necesite un método Get, en lugar de una propiedad con un getter. –
Hay dos razones (en sentido amplio) separadas por qué le puede utilizar en lugar de las propiedades Get/Set métodos:
- Usted desea que la brevedad de un campo, pero desea conceder acceso de sólo lectura a el "exterior", mientras readwrite-acceso al "interior".
- desea que el brevedad y la connotación de un campo, mientras que secretamente ser capaz de cumplir o manipular las cosas bajo el capó, tales como:
- que requieren valores dentro de un cierto rango (en conjunto).
- Limpieza o fijación automática de ciertos valores (durante el ajuste).
- Actualizar (o postergar la actualización) otros datos dependientes (durante el conjunto).
- Evitando un cálculo completo que sería necesario para el campo, hasta que el campo se use realmente (durante get).
- Cualquier otra cosa que de otra manera tendría que colocar dentro de un método apropiado, pero preferiría que el mundo exterior aún lo viera como un campo.
- 1. C# get y set taquigrafía
- 2. C# Propiedades automáticas: ¿Por qué tengo que escribir "get; set;"?
- 3. Cuándo usar las variables de instancia y cuándo usar las propiedades
- 4. Usando las propiedades típicas get set en C# ... con los parámetros
- 5. C# Get/Set Sintaxis Uso
- 6. Agregue 'set' a las propiedades de la interfaz en C#
- 7. cuándo usar Set vs. Collection?
- 8. Cuándo usar Propiedades y cuándo Mapa en Java?
- 9. ¿Está utilizando las propiedades get set de C# como una buena práctica?
- 10. Seguridad de hilo C# con get/set
- 11. force get/set acceso de variables privadas para propiedades privadas
- 12. Propiedades del indexador C# - ¿Hay alguna forma de virtualizar el método get y no el set?
- 13. Cuándo usar atributos vs. cuándo usar propiedades en python?
- 14. Cuándo usar vectores y cuándo usar matrices en C++?
- 15. Cuándo usar las clases en C#?
- 16. Memcached - ¿Las operaciones GET y SET son atómicas?
- 17. ¿Puedo generar automáticamente mis métodos get/set en C#?
- 18. Cuándo usar self en las propiedades de clase?
- 19. Ruby class set/get
- 20. Cuándo usar atributos en lugar de propiedades?
- 21. Cuándo usar categorías y cuándo usar subclases?
- 22. Autogeneración de métodos Get & Set?
- 23. Cuándo utilizar las Propiedades de dependencia
- 24. ¿Cuándo puedo comenzar a usar las propiedades establecidas usando UIAppearance?
- 25. ¿Utiliza el patrón get/set (en Python)?
- 26. error de desbordamiento de pila en C# set/get
- 27. qué propiedades implementadas automáticamente deben definir tanto acceso get y set
- 28. Cuándo usar "nuevo" y cuándo no hacerlo, en C++?
- 29. ¿Cuándo debo usar malloc en C y cuándo no?
- 30. Objeto django get/set campo
http://www.csharp-station.com/Tutorials/Lesson10.aspx –
user544079 - Creo que viene desde el fondo de Java. La respuesta de Cody resume el enfoque para C#. – Pradeep