En CLR via CSharp capítulo 10 "Propiedades" Jeff Richter escribe:¿Por qué la ejecución de propiedades es más lenta que la ejecución de campo o método?
métodoUna propiedad puede tomar mucho tiempo para su ejecución; el acceso de campo siempre se completa inmediatamente. Una razón común para usar propiedades es realizar la sincronización de subprocesos, que puede detener el subproceso para siempre, y, por lo tanto, no se debe usar una propiedad si se requiere la sincronización de subprocesos . En esa situación, se prefiere un método. Además, si se puede acceder remotamente a su clase (por ejemplo, su clase se deriva de System.MarshalByRefObject), llamar al método de la propiedad será muy lento y, por lo tanto, se prefiere un método a una propiedad . En mi opinión, las clases derivadas de MarshalByRefObject nunca deben usar propiedades.
¿Es este el caso incluso si la propiedad está definida para simplemente devolver el campo privado? ¿Por qué se prefiere un método en sincronización? y ¿por qué se prefiere un método en el escenario MarshalByRefObject?
Para aclarar mi pregunta:
Jeff parece estar haciendo una declaración general de que las propiedades no son aconsejables, y que los métodos son preferibles en esos 2 escenarios. como señaló Joe White, las propiedades pueden tener un código arbitrario. Pero los métodos pueden ejecutar el mismo código arbitrario. Esa es la parte con la que estoy teniendo problemas. ¿Existe alguna ventaja en el uso de métodos sobre las propiedades (dado que se usa el mismo código) para la sincronización o la clasificación, o simplemente tiene un problema con la convención del lenguaje?
El punto de Jeff es que una llamada al método "GetBlah" * se comunica con el lector * "esto podría ser lento" y una propiedad "Blah" comunica "esto es casi seguro rápido". Entonces, si vas a hacer algo lento, hazlo un método. No estoy completamente * de acuerdo con este consejo; por ejemplo, a menudo hago que las propiedades tengan lentos * improbables casos peores * pero tengan un excelente rendimiento * amortizado *. Pero el consejo de Jeff es definitivamente un buen punto de partida; desviarse de ella una vez que sepa lo que está haciendo. –